Выбор ответа Senior HTTP, WSGI и ASGI обновлено
Таймаут воркера gunicorn
Вопрос
В логах gunicorn появились WORKER TIMEOUT и перезапуски воркеров. Что это значит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Воркер не отчитался мастеру дольше --timeout, обычно из-за долгого запроса. Мастер gunicorn следит за воркерами и убивает тех, кто не подаёт признаков жизни дольше timeout.
Варианты ответа
- Воркер не отчитался мастеру дольше
--timeout, обычно из-за долгого запросаправильный ответ - Клиент закрыл соединение до ответа, и gunicorn перезапускает воркер
- В nginx закончились воркеры, и gunicorn ждёт освобождения апстрима
- Python исчерпал лимит рекурсии, и мастер перезапускает упавший воркер
Разбор
Мастер gunicorn следит за воркерами и убивает тех, кто не подаёт признаков жизни дольше timeout. Для sync-воркера это значит, что один запрос шёл дольше таймаута: медленный SQL, внешний API без таймаута, бесконечный цикл. Лечение: таймауты на все внешние вызовы, оптимизация запроса, перенос долгой работы в очередь. Поднимать timeout вместо этого обычно плохая идея.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.