Задать вопрос
@pcdesign

Как деплоить Flask-SocketIO c gunicorn и nginx?

Вот например, приложение с чатом:
https://github.com/miguelgrinberg/Flask-SocketIO-Chat

Если идти по официальной документации:
gunicorn --worker-class eventlet -w 1 module:app
То все отлично работает, но мы получаем только один воркер.
Если поставить -w 4, то все сломается.

По документации, чтобы запустить несколько воркеров, там уже начинаются танцы с бубном - с redis и т.д.

Есть ли вариант просто запустить два gunicorn, на двух разных портах.
Один gunicorn будет работать с 4-мя воркерами и отвечать за все кроме чата на порту 8888.
А второй gunicorn только за socketio и будет работать с одним воркером на порту 7777.
В nginx это будет выглядеть как-то так:

location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8888;
    }


    location /socket.io {
        include proxy_params;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass http://127.0.0.1:77777/socket.io;
    }
}


Стоит ли так заморачиваться? И может есть более лучшие решения?
  • Вопрос задан
  • 1088 просмотров
Подписаться 2 Средний 3 комментария
Решения вопроса 1
@pcdesign Автор вопроса
В результате моих исследований такое резюме.
Нет смысла так делать.
Указание --worker-class eventlet
https://pypi.org/project/eventlet/
Запускает неблокирующую библиотеку, которая может обслуживать запросы параллельно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
YCLIENTS Москва
от 350 000 до 400 000 ₽
Viletech Москва
от 70 000 до 120 000 ₽
от 200 000 до 250 000 ₽