App Engine: можно ли ставить задачи в асинхронном режиме? - PullRequest
1 голос
/ 28 марта 2011

Многие из моих обработчиков добавляют задачу в очередь задач для выполнения некритической фоновой обработки. Поскольку эта обработка не критична, если вызов taskqueue.add () выдает исключение, мой код просто игнорирует его.

Сегодня вечером очередь задач казалась закрытой примерно на полчаса. Хотя мои обработчики правильно проигнорировали ошибку, им потребовалось около 5 секунд для вызова taskqueue.add () для timeout и перехода к обработке остальной части страницы. Поэтому мой сайт работал очень медленно.

Итак, возможно ли ставить задачу в асинхронном режиме, то есть способ добавить задачу, не дожидаясь, пока добавление завершится успешно?

В качестве альтернативы, есть ли способ сократить этот тайм-аут с 5 секунд до, например, 1 секунды?

Спасибо.

Ответы [ 3 ]

1 голос
/ 28 марта 2013

Вы можете использовать новые методы очереди задач create_rpc и add_async. Если вам все равно, если добавление завершится успешно, просто наберите add_async и проигнорируйте результат. Если вы заботитесь, но хотите подождать только 1 секунду, установите крайний срок при вызове create_rpc и используйте возвращаемое значение в качестве аргумента RPC для add_async. Позвоните get_result, чтобы узнать, были ли успешно добавлены задачи.

1 голос
/ 28 марта 2011

Я думаю, вы ничего не можете с этим поделать, потому что вызов RPC под add является синхронной блокировкой вызовом API.

Вы можете попытаться добавить некоторые проверки, используя API возможностей .

0 голосов
/ 28 марта 2013

Я почти уверен, что GAE объявил, что добавления TQ будут асинхронными со следующим выпуском (экспериментальная функция).

...