Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top