Flask-SocketIO: Websocket transport not available when using eventlet with the gunicorn web server
An exception is thrown during the upgrade mechanism:
12e130f2f9e3430da0b461d634f40649: Received request to upgrade to websocket
[2015-10-13 23:28:00 +0000] [5684] [ERROR] Error handling request
Traceback (most recent call last):
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/gunicorn/workers/async.py", line 52, in handle
self.handle_request(listener_name, req, client, addr)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/gunicorn/workers/async.py", line 105, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/engineio/middleware.py", line 32, in __call__
return self.engineio_app.handle_request(environ, start_response)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/socketio/server.py", line 301, in handle_request
return self.eio.handle_request(environ, start_response)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/engineio/server.py", line 224, in handle_request
environ, start_response)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/engineio/socket.py", line 75, in handle_get_request
start_response)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/engineio/socket.py", line 110, in _upgrade_websocket
return ws(environ, start_response)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/eventlet-0.17.4-py2.7.egg/eventlet/websocket.py", line 113, in __call__
ws = self._handle_hybi_request(environ)
File "/home/miguel/Documents/dev/flask/flask-socketio/venv27/lib/python2.7/site-packages/eventlet-0.17.4-py2.7.egg/eventlet/websocket.py", line 195, in _handle_hybi_request
sock = environ['eventlet.input'].get_socket()
KeyError: 'eventlet.input'
About this issue
- Original URL
- State: closed
- Created 9 years ago
- Comments: 18 (8 by maintainers)
@incognick Note that you have installed eventlet in your virtualenv. Eventlet and gevent are different and incompatible. Flask-SocketIO gives you the option to use either one. If you want to use gevent, then uninstall eventlet from your virtualenv, and then install gevent and gevent-websocket.
As a side note, if you consider ever porting your app to Python 3, then eventlet is much more stable on that version than gevent, which only recently was ported.