Jeffrey Gelens  committed 8431792

Implemented worker for Gunicorn

  • Participants
  • Parent commits c8aeb96
  • Branches default

Comments (0)

Files changed (4)

 _gevent-websocket is written and maintained by `Jeffrey Gelens`_ and licensed
 under the BSD license.
-Install gevent-websocket
 Install Python 2.4 or newer and gevent and its dependencies. The latest release
 can be download from _PyPi or by cloning the _repository.
+Native Gevent
+At the moment gevent-websocket has one handler based on the Pywsgi gevent
+server. Set the `handler_class` when creating a pywsgi server instance to make
+use of the Websocket functionality:
+    from gevent import pywsgi
+    from geventwebsocket.handler import WebSocketHandler
+    server = pywsgi.WSGIServer(('', 8000), websocket_app,
+        handler_class=WebSocketHandler)
+    server.serve_forever()
+Afterwards write a WSGI application with a 3rd parameter, namely a websocket instance:
+    def websocket_app(environ, start_response, ws):
+        if ws.path == '/echo':
+            message = ws.wait()
+            ws.send(message)
+Using Gunicorn it is even more easy to start a server. Only the
+websocket_app from the previous example is required to start the server.
+Dtart Gunicorn using the following command and worker class:
+    gunicorn -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" gunicorn_websocket:websocket_app
 .. _gevent-websocket:
 .. _gevent:
 .. _Jeffrey Gelens:

File geventwebsocket/gunicorn/

Empty file added.

File geventwebsocket/gunicorn/

+from geventwebsocket.handler import WebSocketHandler
+from gunicorn.workers.ggevent import GeventPyWSGIWorker
+class GeventWebSocketWorker(GeventPyWSGIWorker):
+    wsgi_handler = WebSocketHandler

File geventwebsocket/

 from gevent.pywsgi import WSGIHandler
 from geventwebsocket import WebSocket
 class WebSocketHandler(WSGIHandler):
     def handle_one_response(self):
         self.time_start = time.time()