5 ms·
Building a non-WSGI Python framework would be useful because WSGI does not support websockets (http://librelist.com/browser//flask/2011/12/30/websockets/#b8215c
by espeed 15y ago
Building a non-WSGI Python framework would be useful because WSGI does not support websockets (http://librelist.com/browser//flask/2011/12/30/websockets/#b8215c55f7d5121fed8b1db3d51b9ce4 http://librelist.com/browser//flask/2011/12/30/websockets/#b...).
A ZeroMQ-based framework might be interesting -- Brubeck (http://brubeck.io/ http://brubeck.io/) is an example of this.
Nginx (https://github.com/FRiCKLE/ngx_zeromq https://github.com/FRiCKLE/ngx_zeromq) is starting to get support for ZeroMQ, and Mongrel2 (http://mongrel2.org/ http://mongrel2.org/) was designed around it.
- ak217 15y agoI'm really interested in this for building simple API endpoints. I tried a bunch of WSGI servers and lightweight frameworks to serve stuff on them, but realized that there is no way to support chunked request content encoding with WSGI (the WSGI spec is not compatible with it, so WSGI can't support HTTP/1.1). Hopefully Brubeck is good, please let us know if there's anything else worth checking out!
- anthonyb 15y agoEventlet seems to support it: http://blog.eventlet.net/2010/02/12/scalable-wsgi-compatible-websockets/ http://blog.eventlet.net/2010/02/12/scalable-wsgi-compatible...
- jemeshsu 15y agoPython's greenlet libraries such as Gevent & eventlet makes websocket type of applications possible. It is not difficult to add in websocket support into WSGI frameworks such as Pyramid/Flask. One example http://blog.abourget.net/2011/3/17/new-and-hot-part-4-pyramid-socket-io-gevent/ http://blog.abourget.net/2011/3/17/new-and-hot-part-4-pyrami.... You can have both WSGI and websocket in the same stack.
- espeed 15y agoYou can, but monkey patching is not always ideal (https://www.google.com/search?q=gevent+monkey+patch+issues https://www.google.com/search?q=gevent+monkey+patch+issues).
- jemeshsu 15y agoSupport for websocket is not yet fully baked into Mongrel2. The handshake etc needs to be done on the handler side. So gevent solution is a better bet at the moment. The alternative is to have a separate Tornado/Node.js to handle websocket alongside Django/Pyramid app. Mongrel2 does look promising, although it seems zedshaw is pretty resource tide at the moment.
- irahul 15y agoDon't run on your whole app on gevent, but only the part which needs streaming/long poll. By decreasing the surface area, you can pin point the bugs arising due to monkey patching.