У меня есть приложение фляги, которое обеспечивает три функции, а именно:
- Загрузка некоторых файлов CSV
- Обработка файлов и выполнение задачи с очень высокой загрузкой процессора
- Возвратобработанные файлы и результаты.
Все три определены в 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
в колбе.