cirospaciari
Bringing WebSockets, Http/Https High Performance servers for PyPy, CPython, and helping to bake Bun 🍞
Funding Links: https://github.com/sponsors/cirospaciari
- Name: Ciro Spaciari
- Location: São Paulo, Brazil
- Kind: user
- Followers: 294
- Following: 92
- Total stars: 1604
- Repositories count: 47
- Created at: 2022-11-11T10:52:10.224Z
- Updated at: 2025-03-28T12:07:01.806Z
- Last synced at: 2025-03-28T12:07:01.806Z
GitHub Sponsors Profile
I'm a software developer searching for support to get more performance to Python, PyPy3 and Ruby, in Web Development.
This year i started a journey to bring a really fast framework for Http, Http2, Http3 and WebSockets to Python and PyPy.
💡 Features
WebSocket with pub/sub support
Fast and realiable Http/Https
Support for Windows, Linux and macOS Silicon & x64
Support for PyPy3 and CPython
Dynamic URL Routing with Wildcard & Parameter support
Sync and Async Function Support
Really Simple API
Fast and Encrypted TLS 1.3 quicker than most alternative servers can do even unencrypted, cleartext messaging
Per-SNI HttpRouter Support
Proxy Protocol v2
Shared or Dedicated Compression Support
Max Backpressure, Max Timeout, Max Payload and Idle Timeout Support
Automatic Ping / Pong Support
Per Socket Data
Middlewares
Templates Support (examples with Mako and Jinja2)
🔎 Upcoming Features
Fetch like API powered by libuv
Async file IO powered by libuv
Full asyncio integration with libuv
Full Http3 support
HPy integration to better support CPython, PyPy and GraalPython
Hot Reloading
We created and adapted the full C API from uNetworking/uWebSockets and will integrate libuv powered fetch and file IO, this same C API is used by Bun
Join Github Discussions or Discord for help and have a look at the development progress.
I will use the funds of this sponsorship to get more developers and features in the project, and work full time on bringing socketify to Python, Ruby and more languages.
The problems with japronto and uvloop
Japronto don't get any github updates since 2020 and don't get any src update since 2018, japronto don't support SSL, WebSockets, PyPy3, Windows or macOS Silicon.
I really needed good support + performance, not only performance.
Almost any solution out there have a really big performance hit when using PyPy3 or are not really fast enougth
The Solution
I discover a really fast, small, and well maintained C++ Library called uNetworking/uWebSockets, but no C API available, so we create and adapt the full C API from uNetworking/uWebSockets and will integrate libuv powered fetch and file IO, this same C API is used by Bun
⚡ Benchmarks
HTTP requests per second (Linux x64)
WebSocket messages per second (Linux x64)
Socketify got almost 900k messages/s with PyPy3 and 860k with Python3 the same performance as Bun that also uses uWebSockets, Falcon at 35k messages/s and Falcon with PyPy3 improves into 56k messages/s, node.js manages 192k.
Runtime versions: PyPy3 7.3.9, Python 3.10.7, node v16.17.0, bun v0.2.2
Framework versions: gunicorn 20.1.0 + uvicorn 0.19.0, socketify alpha, gunicorn 20.1.0 + falcon 3.1.0, robyn 0.18.3
Http tested with oha -c 40 -z 5s http://localhost:8000/ (1 run for warmup and 3 runs average for testing)
WebSocket tested with Bun.sh bench chat-client
Source code in bench
Machine OS: Debian GNU/Linux bookworm/sid x86_64 Kernel: 6.0.0-2-amd64 CPU: Intel i7-7700HQ (8) @ 3.800GHz Memory: 32066MiB
Today socketify has get 30% performance hit due to workarounds between asyncio + libuv, so we will got even faster! See more info in this issue, Python3 and PyPy3 performance will improve when we migrate to HPy. In TechEmPower paintext benchmarks we are the fastest in active web framework for Python/PyPy with more than 2 millions of req/s, followed by Robyn with almost 1.2 million req/s and Falcon using meinheld with about 560k req/s.
- Current Sponsors: 1
- Past Sponsors: 4
- Total Sponsors: 5
- Minimum Sponsorship: $1.00
Featured Works
cirospaciari/socketify.py
Bringing Http/Https and WebSockets High Performance servers for PyPy3 and Python3
Language: Python - Stars: 1529cirospaciari/socketify.rb
Bringing WebSockets, Http/Https High Peformance servers for Ruby
Language: C - Stars: 8Active Sponsors
Past Sponsors
Sponsor Breakdown
- User: 4
Past Sponsorships
View AllSponsorship Breakdown by Kind
- User: 2