Как работают очереди задач Google App Engine? - PullRequest
26 голосов
/ 10 февраля 2011

Я запутался в выполнении задач с использованием очередей.Я прочитал документацию и мне показалось, что я понял bucket_size и rate, но когда я отправляю 20 задач в очередь, установленную на 5 / ч, размер 5, все 20 задач выполняются одна за другой как можно быстрее, заканчивая менее чем за1 минута.

deferred.defer(spam.cookEggs, 
               egg_keys, 
               _queue="tortoise")  

- name: tortoise
  rate: 5/h  
  bucket_size: 5  

Я хочу, чтобы я создал 10 или 100 задач, я хочу, чтобы только 5 из них выполнялись в час.Таким образом, для выполнения 20 заданий потребуется около 4 часов.Я хочу, чтобы их выполнение было распространено.

ОБНОВЛЕНИЕ

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

Ответы [ 2 ]

7 голосов
/ 14 сентября 2011

Скорость выполнения не учитывается app_devserver. Эта проблема не должна возникать в производстве.

[Ответ, обнаруженный Ником Джонсоном и / или автором вопроса; публикуя здесь как вики сообщества, так что у нас есть что-то, что может быть отмечено как принятое]

0 голосов
/ 10 февраля 2011

Вы хотите установить bucket_size на 1, иначе у вас будут всплески активности в очереди, как вы видели там.

Из документации :

bucket_size

Ограничивает прерывистость обработки очереди, т. Е. Больший размер сегмента допускает большие пики в скорости выполнения очереди.Например, рассмотрим очередь со скоростью 5 / с и размером сегмента 10. Если эта очередь в течение некоторого времени была неактивна (позволяя заполнить ее «область маркеров»), и 20 задач внезапно были поставлены в очередь, она будетиметь возможность выполнять 10 задач немедленно.Но в следующую секунду только 5 задач будут выполнены из-за того, что корзина токенов исчерпана и выполняется с указанной скоростью 5 / с.

...