Таймаут рабочего Gunicorn - какой рабочий gunicorn синхронизируется с gthread

Я использую Django и Django Rest Framework (DRF) для своего проекта. В производстве, когда я делаю HTTP-запросы, модуль Gunicorn на сервере создает еще одного рабочего для обработки этого запроса. Этот процесс требует двух рабочих: один для обработки запроса Django, а другой порождается, когда код Django делает HTTP-запрос к представлению DRF. Через некоторое время я часто сталкивался с длительным временем отклика, что в конечном итоге приводило к ошибке шлюза 502. Изучив журналы, я обнаружил, что все мои рабочие были заняты и ждали ответа DRF. Одновременно разные клиенты делали запросы, но не было свободных рабочих, чтобы обработать эти новые HTTP-запросы (я использую 3 рабочих с синхронной моделью рабочих по умолчанию в Gunicorn). Как я могу справиться с этой ситуацией, когда есть несколько одновременных запросов? После этого я изменил свое приложение, чтобы минимизировать HTTP-запросы для внутренней коммуникации. Раньше для внутренних операций я использовал представления Django Rest Framework (DRF), доступ к которым осуществлялся через HTTP-запросы. Теперь я изменил его на использование прямых внутренних вызовов функций Python вместо этого. Я размышляю над тем, есть ли дополнительные оптимизации или конфигурации, которые я должен реализовать на уровне Gunicorn в производстве. Несмотря на изучение официальной документации Gunicorn и нескольких статей, я столкнулся с противоречивой информацией, которая не позволяет мне выбрать оптимальный вариант действий.

Вернуться на верх