У меня есть работающее приложение чата на локальном хосте, но оно не работает на героку (Вчерашний вопрос). После некоторых исследований я думаю, что проблема в том, как я запускаю приложение.
Procfile в настоящее время:
web: gunicorn adult_main:app
Мне нужно использовать gevent
в сочетании с gunicorn
. Таким образом, я должен быть в состоянии иметь макс. 1000 подключений socket.io, чего мне на данный момент достаточно.
Я уже установил и добавил gevent в папку requirements.txt
. Вот выдержка из файла:
Flask-SocketIO==2.9.6
gunicorn==19.7.1
gevent==1.2.2
gevent-socketio==0.3.6
gevent-websocket==0.10.1
Но я не понимаю, как правильно запустить приложение. Кстати, я использую бесплатный уровень heroku, чтобы все проверить.
Я попробовал несколько решений, которые нашел в Интернете, но я не полностью их понимаю, и я еще не нашел документации по этому вопросу. Вот некоторые из моих попыток:
web: gunicorn -k gevent-socketio adult_main:app
web: gunicorn -k gevent adult_main:app
Я тоже пытался запустить без гуникорна, но думаю, что это было совершенно неправильно. Я на правильном пути здесь?
ИЗМЕНИТЬ
Мне удалось добиться некоторого прогресса с:
web: gunicorn -k gevent -w 1 adult_main:app
Приложение теперь не вылетает при запуске, но в веб-консоли вижу ошибку:
socket.io.js:7 WebSocket connection to 'wss://my-
project.herokuapp.com/socket.io/?
EIO=3&transport=websocket&sid=0022c1937df648bbab836bfcb4c35' failed: Error
during WebSocket handshake: Unexpected response code: 500
В логах хероку:
RuntimeError: You need to use the gevent-websocket server.
ИЗМЕНИТЬ
Несмотря на то, что я вижу эти ошибки, чат теперь работает на героку. Это действительно странно. Возможно, я могу установить сейчас только 1 соединение, как теперь продолжить?