今年,我开始了一段旅程,为HTTP,HTTP2,HTTP3和Websockets带来了Python和Pypy的非常快的框架。
Japronto和Uvloop的问题
Japronto自2020年以来就没有获得任何GitHub更新,并且自2018年以来就没有获得任何SRC更新,Japronto不支持SSL,WebSockets,koude0,Windows或Macos Silicon。
我真的需要良好的支持 +性能,不仅是性能。
使用PYPY3时,几乎所有解决方案都有很大的性能,或者不是真正快速的Enougth
解决方案
我们发现了一个非常快,小且维护良好的C ++库,称为uNetworking/uWebSockets,但是没有C API,因此我们从uNetworking/uWebSockets创建并适应了完整的C API,并将集成Libuv powered fetch and file io,同一C API由Bun
使用基准测试
使用TechEmpower Plaintext Benchmarks从Japronto进行当前版本与582K,我们获得了约770K REQ/S,一旦与Libuv + Asyncio完全集成,我们仍然可以至少获得30%或更多的性能。
。socketify.py带来:
该项目旨在带来高性能PYPY3 Web开发,并将带来:
安装
用于MacOS X64和Silicon,Linux X64,Windows
pip install git+https://github.com/cirospaciari/socketify.py.git
#or specify PyPy3
pypy3 -m pip install git+https://github.com/cirospaciari/socketify.py.git
#or in editable mode
pypy3 -m pip install -e git+https://github.com/cirospaciari/socketify.py.git@main#egg=socketify
代码示例
from socketify import App, AppOptions
app = App(AppOptions(key_file_name="./misc/key.pem", cert_file_name="./misc/cert.pem", passphrase="1234"))
app.get("/", lambda res, req: res.end("Hello World socketify from Python!"))
app.listen(3000, lambda config: print("Listening on port http://localhost:%d now\n" % config.port))
app.run()
支持
socketify是一个活跃的项目,随着时间的推移,将通过安全更新和新功能维护,并将成为可用的商业支持
检查我们的github页面:https://github.com/cirospaciari/socketify.py