Gunicorn закрывает соединение с gthread - PullRequest
0 голосов
/ 28 мая 2019

Я запускаю приложение фляги с работниками gunicorn и gthread - я запускаю приложение с gunicorn --config config/gunicorn.py api_intent:make_app() и мой файл config/gunicorn.py выглядит так:

bind = ['0.0.0.0:80']
worker_class = "gthread"


__all__ = ['bind']

Одна из моих конечных точек колб делает сложные вызовы базы данных, для выполнения которых требуются минуты. Иногда я вижу следующую ошибку на стороне клиента: Remote end closed connection without response. Тем не менее, я также обнаружил, что если я выполняю последующий идентичный вызов, то на клиентской стороне не возникает ошибка, и я нахожу в журналах сервера, что дорогостоящие вызовы базы данных занимают меньше времени (хотя и порядка нескольких минут), вероятно, потому что данные, о которых заботится конечная точка, заносятся в память.

Я смотрел на документы о оружейном оружии и, в частности, на вариант timeout, но мне сложно понять последствия изменения времени ожидания для асинхронных рабочих. Насколько я понимаю, с помощью gthread рабочие обеспечивают пульс некоторого главного процесса, и мне не ясно, почему значение по умолчанию, равное 30 секундам для этого значения, лишь иногда заставляет сервер закрывать соединение с клиентом. Может ли быть так, что если для одного вызова БД требуется> 30 секунд выполнения, работник gthread будет считаться мертвым?

Как я могу правильно дать команду gunicorn ждать дольше, прежде чем закрывать соединения? Могу ли я настроить это для конечной точки?

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