2013-04-05 2 views
1

Каждую минуту мое приложение создает некоторые данные и отправляет их на более чем 1000 удаленных серверов через обратные вызовы URL-адреса. URL-адрес обратного вызова для каждого сервера хранится на отдельных объектах. Временная задержка между созданием данных и отправкой их на удаленные серверы должна быть примерно менее 5 секунд.Как отключить запросы на выборку URL-адресов своевременно?

Моя первоначальная мысль заключается в использовании API конвейера для разворачивания запросов на выборку URL в разные очереди задач.

К сожалению, очереди задач не гарантируются своевременно. Поэтому, начиная с запроса очереди задач, запуск которой фактически выполняется, может занять от нескольких минут до нескольких часов. Из предыдущего опыта этот пробел регулярно превышает одну минуту, поэтому это необязательно.

Есть ли какой-либо путь из App Engine для достижения того, чего я хочу? Может быть, вы знаете внешнюю службу, которая может сделать фанат своевременно?

+0

Возможно, я мог использовать URL Fetch для прямого вызова экземпляров внешнего интерфейса в моем собственном приложении, которое в свою очередь вызывает выбор URL-адреса на удаленных серверах? В каком случае, как мне следует оштрафовать обратные вызовы, как это делается с API Pipeline? – Dan

+0

Я знаю, что этот вопрос старый. Так как вы говорите 1000 урн, а не 10 000 ... вы посмотрели на перспективный поиск? Вы нашли хорошее решение? – Jay

+0

Я закончил делать то, что я сказал в предыдущем комментарии, и использовать внешние экземпляры, вызванные URLFetch, чтобы отключиться. Я также использовал принципы https://code.google.com/p/appengine-mapreduce/wiki/ScatterPropertyImplementation, чтобы решить, как много обойти. – Dan

ответ

1

Ну, вероятно, нет хорошего решения для gae здесь. Вы можете поддерживать бэкэнд; забирая datastore/memcache каждую секунду для отправки новых данных, а затем создавайте десятки асинхронных URL-запросов. Но это действительно неэффективно ...

Если вы хотите воспользоваться сторонним сервисом, pubnub.com способен делать разветвление, однако я не знаю, может ли он вписаться в вашу настройку.

1

Как насчет использования асинхронного API? Затем вы можете выполнить большое количество одновременных URL-адресов, все из одного места.

Если производительность особенно чувствительна, вы можете сделать это с помощью бэкэнд и использовать экземпляр B8.

Смежные вопросы