Jeffrey Gelens avatar Jeffrey Gelens committed 8431792

Implemented worker for Gunicorn

Comments (0)

Files changed (4)

 _gevent-websocket is written and maintained by `Jeffrey Gelens`_ and licensed
 under the BSD license.
 
-Install gevent-websocket
+Installation
 ------------------------
 
 Install Python 2.4 or newer and gevent and its dependencies. The latest release
 can be download from _PyPi or by cloning the _repository.
 
+Usage
+-----
+
+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(('127.0.0.1', 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)
+
+Gunicorn
+^^^^^^^^
+
+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: http://www.bitbucket.org/Jeffrey/gevent-websocket/
 .. _gevent: http://www.gevent.org/
 .. _Jeffrey Gelens: http://www.gelens.org/
Add a comment to this file

geventwebsocket/gunicorn/__init__.py

Empty file added.

geventwebsocket/gunicorn/workers.py

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

geventwebsocket/handler.py

 from gevent.pywsgi import WSGIHandler
 from geventwebsocket import WebSocket
 
-
 class WebSocketHandler(WSGIHandler):
     def handle_one_response(self):
         self.time_start = time.time()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.