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)

Most upvoted comments

@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.