@Bleno

Что делать, если gunicorn закрывает не все дочерние потоки?

Дано: Python 3.7, веб-сервер flask под gunicorn.

На каждый запрос gunicorn создаёт отдельный поток (модуль threading), но по каким-то причинам gunicorn закрывает не все потоки, после исполнения кода. В итоге получается такая картина:

[item.name for item in threading.enumerate()]
['MainThread', 'WorkerThread1', 'WorkerThread2', 'WorkerThread3', 'WorkerThread4', 'WorkerThread5', 'WorkerThread6', 'WorkerThread7', 'WorkerThread8', 'WorkerThread9', 'WorkerThread10', 'WorkerThread11', 'WorkerThread12', 'WorkerThread13', 'WorkerThread14', 'WorkerThread15', 'WorkerThread16', 'WorkerThread17', ...

Через какое-то время эти незакрытые потоки накапливаются и в итоге дают большую нагрузку на ЦП.

Почему они не закрываются? Как это исправить?
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы