andrewammerlaan@riseup.net Andrew Ammerlaan What is websockets? websockets is a library for building WebSocket servers and clients in Python with a focus on correctness and simplicity. Built on top of asyncio, Python's standard asynchronous I/O framework, it provides an elegant coroutine-based API. Why should I use websockets? The development of websockets is shaped by four principles: Simplicity: all you need to understand is msg = await ws.recv() and await ws.send(msg); websockets takes care of managing connections so you can focus on your application. Robustness: websockets is built for production; for example it was the only library to handle backpressure correctly before the issue became widely known in the Python community. Quality: websockets is heavily tested. Continuous integration fails under 100% branch coverage. Also it passes the industry-standard Autobahn Testsuite. Performance: memory use is configurable. An extension written in C accelerates expensive operations. It's pre-compiled for Linux, macOS and Windows and packaged in the wheel format for each system and Python version. Documentation is a first class concern in the project. Head over to Read the Docs and see for yourself. Why shouldn't I use websockets? If you prefer callbacks over coroutines: websockets was created to provide the best coroutine-based API to manage WebSocket connections in Python. Pick another library for a callback-based API. If you're looking for a mixed HTTP / WebSocket library: websockets aims at being an excellent implementation of RFC 6455: The WebSocket Protocol and RFC 7692: Compression Extensions for WebSocket. Its support for HTTP is minimal — just enough for a HTTP health check. If you want to use Python 2: websockets builds upon asyncio which only works on Python 3. websockets requires Python ≥ 3.6.1. aaugustin/websockets websockets