High-performance WebSockets for your Flask apps powered by uWSGI.
Project description
High-performance WebSockets for your Flask apps powered by uWSGI. Inspired by Flask-Sockets.
from flask import Flask
from flask.ext.uwsgi_websocket import WebSocket
app = Flask(__name__)
ws = WebSocket(app)
@ws.route('/echo')
def echo(ws):
while True:
msg = ws.receive()
ws.send(message)
Installation
To install Flask-uWSGI-WebSocket, simply:
$ pip install Flask-uWSGI-WebSocket
Deployment
You can use uWSGI’s built-in HTTP router to get up and running quickly:
$ uwsgi --master --http :8080 --http-websockets --wsgi-file app.py
uWSGI supports several concurrency models, in particular it has nice support for Gevent. If you want to use Gevent, use flask.ext.uwsgi_websocket.GeventWebSocket and configure uWSGI to use the gevent loop engine:
$ uwsgi –master –http :8080 –http-websockets –gevent 100 –wsgi-file app.py
For production you’ll probably want to run uWSGI behind Haproxy or nginx of course, instead of using the built-int HTTP router. Explore the uWSGI documentation for more detail.
Development
It’s possible to take advantage of Flask’s interactive debugger by installing werkzeug’s DebuggedApplication middleware:
from werkzeug.debug import DebuggedApplication app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
…and running uWSGI with only a single worker:
$ uwsgi --master --http :8080 --http-websockets --wsgi-file --workers 1 --threads 8 app.py
If you specify app.debug = True, Flask-uWSGI-Websocket will do this automatically for you.
API
Flask-uWSGI-Websocket automatically performs the WebSocket handshake for you and passes your router a websocket client exposing uWSGI’s WebSocket API.
websocket.recv()
websocket.send(msg)
websocket.send_binary(msg)
websocket.recv_nb()
websocket.send_from_sharedarea(id, pos)
websocket.send_binary_from_sharedarea(id, pos)
In addition there is a special websocket.receive() method which makes using non-blocking calls simpler.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for Flask-uWSGI-WebSocket-0.0.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | de147968138531cbca59c1d93326b7583de516073d94d1af647eda709a4e56d2 |
|
MD5 | 8f6de3c719d55d2482f1f3b72f632ad1 |
|
BLAKE2b-256 | 90229ab67317794f32072cf222d717bf510698963ab3dae9a5ef32ebe4c21d93 |