На чем лучше запускать сервер Flask с большой нагрузкой на CPU?
Суть в том, что на сайте есть страница, на которой запускаются вычисления, которые неплохо грузят процессор и блокируют поток. Мне нужно чтобы пока они выполняются другие части сайта не отваливались, а продолжали работу.
Пробовал gevent и eventlet в связке с gunicorn, но они либо поддерживают максимальное количество подключений равное количеству воркеров, что уже проблема. Либо если воркеров больше чем 1, то отваливается flask-socketio. Самый подходящий вариант сейчас это дефолтный threding режим и вынесение выполнения в flask-socketio start_background_task. Но, как я понимаю, в таком случае работает только 1 ядро.
Есть ли варианты как это правильно можно сделать? В документации flask-socketio нашел вариант с поднятием дополнительных экземпляров сервера и балансировкой через nginx, но оно не работает, сокеты отправляют запросы куда попало, а нужно чтобы 1 подключение оптарвляло все запросы только на 1 сервер.
Попробуйте запустить через uwsgi там можно настроить количество процессов, которые будет запускать flask и работать ему с потоками или нет. Также там можно выделить отдельный роут в отдельный воркер, так чтобы он работал изолированно от других. Возможно это то что вам нужно.