Heroku: У меня есть запрос, который занимает более 30 секунд, и он прерывается - PullRequest
5 голосов
/ 26 июня 2011

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

Какое решение для этого?Я не уверен, если я добавлю больше dynos, это сработает.

Спасибо

1 Ответ

7 голосов
/ 26 июня 2011

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

Чтобы ответить на вопрос о времени ожидания:

Cedar поддерживает длинные опросы и потоковые ответы.Ваше приложение имеет начальное 30-секундное окно, чтобы ответить клиентом одним байтом.После каждого отправленного байта (полученного от клиента или отправленного вашим приложением) вы сбрасываете 55-секундное окно.Если в течение 55 секунд не будет отправлено никаких данных, ваше соединение будет разорвано.

(то есть, если бы у вас был Cedar вместо Aspen или Bamboo, вы могли бы отправлять байт каждые тридцать секунд или около того, просто чтобыобмануть систему. Это может сработать.)

Чтобы ответить на ваш вопрос о динаме:

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

(То есть не добавляйте больше dynos.)

При тайм-ауты запроса Проверьте ваш код на наличие бесконечных циклов, если вы делаете что-то большое:

Если это так, вы должны перевести это тяжелое занятие в фоновое задание, которое может выполняться асинхронно из вашего веб-запроса.Подробнее см. Очередь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...