Подтвердить что ты не робот

Как работают очереди задач Google App Engine?

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

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

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

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

UPDATE

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

bucket_size

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