Я использую очереди очередей Google App Engine для планирования будущих задач, которые я хотел бы выполнить в течение второй точности их запланированного времени.Задачи App Engine с ETA увольняются гораздо позже, чем запланировано
Как правило, я планирую задачу 30 секунд с этого момента, что вызовет изменение состояния в моей системе и, наконец, запланирует другую будущую задачу.
Все работает нормально на моем локальном сервере разработки.
Однако, теперь, когда я развернулся на серверах GAE, я заметил, что запланированные задачи задерживаются. Я видел, как они бежали даже через две минуты после того, как они были запланированы.
Из очереди задач консоли администратора, он на самом деле говорит на ETA:
ETA: "2013/11/02 22:25:14 0:01:38 ago"
Creation Time: "2013/11/02 22:24:44 0:02:08 ago"
Почему это?
Не удалось найти документацию о ожидании и точности задач, запланированных ETA.
Я программирование в Python, но я сомневаюсь, что это делает никакой разницы \
В коде питона, параметр ета документирован следующим образом:.
eta: A datetime.datetime specifying the absolute time at which the task
should be executed. Must not be specified if 'countdown' is specified.
This may be timezone-aware or timezone-naive. If None, defaults to now.
Мои очереди Настройки:
queue:
- name: mgmt
rate: 30/s
Система не загружается, что так всегда, за исключением 5 задач, которые должны запускаться каждые 30 секунд или около того.
UPDATE:
Я нашел https://code.google.com/p/googleappengine/issues/detail?id=4901 который является запрос принят функции для своевременных очередей, хотя ничто не кажется, что было сделано об этом. Он согласен с тем, что задачи с ETA могут задерживаться даже на многие минуты.
Какие другие альтернативные механизмы я мог бы использовать для планирования триггера со второй точностью?
Насколько я понимаю, ETA является проводником и на него нельзя положиться. –
Документы говорят, что 'A datetime.datetime объект, который обеспечивает самое раннее время выполнения этой задачи. ', И я всегда читаю это как не раньше, чем ETA, но может быть немного позже. –
Я понимаю политику« не раньше ». Однако я бы подумал, что запрос будет вызван в течение нескольких секунд в худшем случае, а затем владельцу приложения будет обслуживать его. Интересно, есть ли какая-либо гарантия того, что запрос задачи будет запущен за определенное количество времени. – Patrick