GAE Task Queues как сделать задержку? - PullRequest
2 голосов
/ 25 июля 2009

В очереди задач выполняется код для подключения к стороне сервера через URL Fetch. Мой файл queue.yaml.

queue: 
- Name: default 
   rate: 10 / m 
   bucket_size: 1 

В таких настройках Tusk выполнял все сразу, одновременно. Специфика заключается в том, что между запросами должно быть задержано не менее 5 секунд . Задание должно выполняться на сцене с разницей> 5 сек. (но не параллельно).

Какие значения установлены в queue.yaml?

Ответы [ 2 ]

3 голосов
/ 26 июля 2009

Вы не можете указать минимальные задержки между задачами в queue.yaml, в настоящее время;Вы должны сделать это (частично) в своем собственном коде. Например, если вы укажете размер сегмента 1 (чтобы никогда больше не выполнялось более одной задачи) и убедитесь, что задачи выполняются не менее 5 секунд (получите start=time.time() в начале, time.sleep(time.time()-(5+start)) вконец) это должно работать. Если это не так, поместите каждую запись задачи в хранилище на отметку времени, которую она завершила, и при запуске проверьте, завершилось ли последнее задание менее 5 секунд назад, и в этом случае немедленно завершите.

1 голос
/ 21 июня 2010

Другим способом может быть сохранение данных задачи в таблице. В вашей очереди задач добавьте параметр id. Извлеките первую задачу из таблицы и передайте ее идентификатор сервлету обработки очереди задач. В сервлете в конце задержки на 5 секунд и в следующем задании передайте его идентификатор и .... и так далее.

...