socketify.py-也许是Python和Pypy的最快的网络框架
#python #pubsub #websockets #pypy

今年,我开始了一段旅程,为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带来:

  • Websocket带有酒吧/子支持
  • 快速,真实的http/https
  • 支持Windows,Linux和MacOS Silicon&X64
  • 支持koude0koude2

该项目旨在带来高性能PYPY3 Web开发,并将带来:

  • 像libuv驱动的API一样
  • 由libuv驱动的异步文件io
  • 与libuv的完全异步集成
  • 完整的HTTP3支持
  • koude3集成以更好地支持koude2koude5koude6

安装

用于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