Ошибка превышения крайнего срока в очереди задач с базовым модулем (механизм приложений Google)
Я использую Python для Google App SDK и Django Framework. В моем случае в очереди задач выдается ошибка превышения крайнего срока
DeadlineExceededError: Превышен общий срок ответа на HTTP-запрос.
хотя использование очереди задач в базовом масштабировании и в соответствии с заданием doc в базовом или ручном масштабировании может длиться до 24 часов.
Задача - обновить все значения БД MySQL, поэтому занимает много времени.
Инициирование задачи отправкой почтового запроса в
@api_view(['POST'])
def post_url(request):
params= dict(.......)#some dict
taskqueue.add(url='/tasks/gcm/gcm_all_user/',
params=params,
method="POST")
return Response('Initiated task')
эта задача отправляется в модуль базового масштабирования с помощью dispatch.yaml
dispatch:
- url: "*/tasks/*"
module: tasks
у модуля задачи есть обработчик для URL
application: some-application
module: tasks
version: 2
runtime: python27
api_version: 1
threadsafe: true
basic_scaling:
libraries:
- name: MySQLdb
version: "latest"
handlers:
- url: /tasks.*
script: app.wsgi.application
Любой может кто-нибудь сказать, как заставить задачу работать дольше без ошибки превышения срока.
1 ответ
Задача может выполняться столько, сколько вам нужно, но HTTP-запросы имеют свои крайние сроки. Возможно, вам придется реорганизовать код, который выполняется внутри вашей задачи - возможно, разбив один большой запрос на серию меньших запросов.