Вот например, приложение с чатом:
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;
}
}
Стоит ли так заморачиваться? И может есть более лучшие решения?