@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;
    }
}


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

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

Войти через центр авторизации
Похожие вопросы