Интенсивный процессорный маршрут убивает поток колбы - PullRequest
0 голосов
/ 24 октября 2019

У меня есть приложение фляги, которое обеспечивает три функции, а именно:

  1. Загрузка некоторых файлов CSV
  2. Обработка файлов и выполнение задачи с очень высокой загрузкой процессора
  3. Возвратобработанные файлы и результаты.

Все три определены в app.py как:

@app.route('/upload', methods=["GET", "POST"])
def upload_file():
"""Files are uploaded"""
   ....

@app.route('/optimize', methods=["GET", "POST"])
def optimize_net():
"""Optimization done here"""
   ....

@app.route('/download', methods=["GET", "POST"])
def download():
"""Lets the user download the process files"""
   ....

И я использую gunicorn для запуска моего приложения

gunicorn --bind 0.0.0.0:5000 --timeout 6000 --workers=2 wsgi:app

Проблема заключается в том, что маршрут /optimize требует значительных вычислительных ресурсов, и через некоторое время все рабочие переходят к sleep, и обработка полностью останавливается.

Я проверил запусктот же процесс за пределами flask и в этом случае все работает нормально. Итак, я предполагаю, что это связано с основным thread в колбе.

...