2014-10-01 5 views
4

Я получаюЛюбой способ продлить срок ожидания запроса?

[2] [КРИТИЧЕСКАЯ] РАБОЧИЙ АУТ при = код ошибки = H12 убывание = "Тайм-аут запроса" метод = POST дино = web.1 подключения = 1мс сервис = 30000ms

Я начинаю колбу веб-приложение на Heroku с

web: gunicorn server:app --timeout 60 --worker-class gevent --log-file=- 

--timeout флага, кажется, не имеет значения, использую ли я синхронизацию или GEvent рабочих. Любые идеи, как я могу продлить лимит времени ожидания запроса?

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

ответ

5

Как ответил на an official Heroku discussion (ссылка мертва сейчас), мы не можно установить тайм-аут верхней чем за 30 секунд:

Heroku убивает все запросы, которые занимают больше времени, чем 30-е годы. Для изменения этого поведения нет способа .


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

0

Это не относится к Heroku, но это плохая идея в целом увеличить таймаут; идея заключается в том, что вы должны как можно скорее вернуть ответ - и за все, что может потребоваться более нескольких секунд, вы должны принять запрос, поставить его в очередь для обработки фона и вернуть ответ, чтобы ваш клиент не был заблокирован.

Для Heroku это означает, что вы должны развернуть рабочий процесс. Это отличается от веб-dyno, который у вас уже есть, поскольку он предназначен для работы в фоновом режиме и не имеет таких ограничений тайм-аута.

Для этого общего шаблона есть excellent writeup at the devcenter, в котором подробно описывается весь процесс.

В частности, для Python на Heroku это реализовано с использованием redis queue.

+0

спасибо за подробный ответ. Я выкопал и обнаружил rq и рабочий вчера вечером. Просто интересно, есть ли у рабочего процесса какие-либо затраты, добавленные к использованию. Не совсем понятно, что может стоить значение стоимости – ttback

+2

, это одноразовый прототип приложения, поэтому я не беспокоюсь о проблемах с задержкой и проблемами пользователей, но приложение не должно умирать в живой демонстрации – ttback

Смежные вопросы