一个纯 Python WSGI 服务器

12次阅读

共计 667 个字符,预计需要花费 2 分钟才能阅读完成。

https://github.com/abersheeran/zibai

相比于 gunicorn,兹白的性能更好,并且可以在 Windows 上直接使用。

相比于 waitress,兹白在不使用 gevent 时单进程性能与它相当,在重载情况下比 waitress 更稳定。兹白可以和 gevent 一起使用,并内置了多进程模式。

兹白还内置了子进程卡死检测,保证了在子进程意外卡死时能得到妥善处理,保证业务稳定。支持了 HUP、TTIN、TTOU 信号用于管理子进程,支持零停机更新。使用了 h11 这一被 uvicorn、httpx、hypercorn 等库广泛使用的解析器,确保了 HTTP 协议的正确性。


具体性能测试数据可以查看仓库中的 benchmark 文件。已经在一些公司业务(主要是朋友们的公司业务)上稳定运行,效果良好。还有朋友说运行起来子进程处理请求的均衡性要比 gunicorn 更好。欢迎大家尝试、反馈问题。

因为兹白是我在维护 uvicorn 时的想法,所以兹白里的多进程管理器我提交 PR 到了 uvicorn 上,这也是 tiangolo 向我捐赠 1000 美金时提到的 PR,可谓价值千金😝。

兹白的名称受 gunicorn、uvicorn 命名的影响,它们都是 unicorn(独角兽)的变种。《山海经》中提到“中曲之山有兽焉,其状如马而白身黑尾,一角,虎牙爪,音如鼓音,其名曰駮,是食虎豹,可以御兵”,《逸周书·王会》又有记载“正北方义渠以兹白,兹白者若白马。锯牙,食虎豹”。所以可以认定兹白就是駮这种长相类似于独角兽的别名,由于駮的名字在 pypi 上已经被使用,于是用了兹白。

正文完
 0