Flask -Socketio: Ошибка при рукопожатии WebSocket: Неожиданный код ответа: 503 & WebSocket закрывается до установления соединения - PullRequest
1 голос
/ 09 июля 2020

Итак, я пытаюсь развернуть свое чат-приложение на Heroku. Я видел несколько ответов, но ни один из них не с flask -socketio, и они с решениями, которые вы не можете сделать с flask -socketio. Я выполнил шаги здесь . Кроме того, вы можете указать ошибку в журналах

2020-07-09T14:55:03.811700+00:00 app[web.1]: Traceback (most recent call last):
2020-07-09T14:55:03.811746+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/eventlet/hubs/hub.py", line 461, in fire_timers
2020-07-09T14:55:03.811747+00:00 app[web.1]: timer()
2020-07-09T14:55:03.811751+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/eventlet/hubs/timer.py", line 59, in __call__
2020-07-09T14:55:03.811752+00:00 app[web.1]: cb(*args, **kw)
2020-07-09T14:55:03.811754+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/eventlet/semaphore.py", line 147, in _do_acquire
2020-07-09T14:55:03.811754+00:00 app[web.1]: waiter.switch()
2020-07-09T14:55:03.811783+00:00 app[web.1]: File "src/gevent/greenlet.py", line 858, in gevent._gevent_cgreenlet.Greenlet.run
2020-07-09T14:55:03.811811+00:00 app[web.1]: File "src/gevent/greenlet.py", line 829, in gevent._gevent_cgreenlet.Greenlet._Greenlet__report_result
2020-07-09T14:55:03.811814+00:00 app[web.1]: File "src/gevent/_gevent_cgreenlet.pxd", line 45, in gevent._gevent_cgreenlet.get_my_hub
2020-07-09T14:55:03.811863+00:00 app[web.1]: TypeError: Cannot convert greenlet.greenlet to gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop
2020-07-09T14:55:03.812531+00:00 heroku[router]: at=info method=POST path="/socket.io/?EIO=3&transport=polling&t=NCq5C0_&sid=59a6f168828134cc39e7314cf4639909f" host=chat-py.herokuapp.com request_id=9c21cf77-3a08-44b9-917b-da87c2dad3fc fwd="176.229.186.130" dyno=web.1 connect=2ms service=7ms status=200 bytes=202 protocol=http
2020-07-09T14:55:33.809904+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/socket.io/?EIO=3&transport=polling&t=NCq5C13&sid=59a63f16888134cc39e7314cf4639909f" host=chat-py.herokuapp.com request_id=5ca46303-e131-4a64-844a-0070916051dc fwd="176.229.186.130" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 protocol=http
2020-07-09T14:55:33.920874+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/socket.io/?EIO=3&transport=websocket&sid=59a6f16888234cc39e7314cf4639909f" host=chat-py.herokuapp.com request_id=87ec71b4-c64a-4e3a-bf31-c6fda30eda3f2 fwd="176.229.186.130" dyno=web.1 connect=2ms service=30000ms status=503 bytes=0 protocol=http

Я вижу, что сайт работает и работает, но по какой-то причине возникла проблема с подключением к socket-io на вкладке сети (вы можете ' t отправлять сообщения, и это сработало на localhost).

вкладка сети network tab

Pipfile:

flask = "*"
flask-sqlalchemy = "*"
flask-socketio = "*"
flask-login = "*"
sqlalchemy = "*"
gunicorn = "*"
psycopg2 = "*"
eventlet = "*"
gevent-websocket = "*"

Procfile:

web: gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 app:app

(the server name is app)

connecting to socketio:

 

начало кода внешнего интерфейса (JS):

$(document).ready(function(){
      var socket = io("http://chat-py.herokuapp.com:" + location.port);
.....

Журналы Heroku

remote:  !     Python has released a security update! Please consider upgrading to python-3.8.3
remote:        Learn More: https://devcenter.heroku.com/articles/python-runtimes
remote: -----> No change in requirements detected, installing from cache
remote: -----> Installing dependencies with Pipenv 2018.5.18…
remote:        Installing dependencies from Pipfile.lock (570f04)…
remote:        Ignoring cffi: markers 'platform_python_implementation == "CPython" and sys_platform == "win32"' don't match your environment
remote:        You are using pip version 9.0.2, however version 20.1.1 is available.
remote:        You should consider upgrading via the 'pip install --upgrade pip' command.

ОБНОВЛЕНО вкладка сети:

после использования опции cors_allowed_origins конфигурация У меня осталась одна ошибка (я почти уверен, что причина ошибки в журналах): введите описание изображения здесь

1 Ответ

0 голосов
/ 09 июля 2020

Хорошо, я не уверен, что это исправило, но я расскажу вам, что я сделал в pu sh, который работал, я переустановил gunicorn (на самом деле делал это несколько раз) и обновил python с 3.8. 2 до 3.8.3 (изменив runtime.txt с python-3.8.2 на python-3.8.3). После того, как я нажал на героку и вошел на сайт, он просто заработал.

...