简介

Unicorn是一个遵守ASGI协议的web服务器,使用asycnio框架,要求python3.6+,支持HTTP1.1和WebSockets。

部分模块介绍

config

  • 参数解析设定
  • 加载app, 中间件
  • 绑定socket

middleware

middleware.wsgi
  • 将同步调用start_response和app方法放到线程池里面执行,通过queue和event来通知sender
middleware.degbug
  • 捕捉traceback.format_exc()返回给请求端
middleware.message_logger
  • 打印详细日志
middleware.proxy_headers
  • 使用LB时,解析来自client的真正procotol和host

protocols

ServerState: 在不同protocols之间共享server的信息如连接数,完成请求数据量,当前tasks

http
  • 继承async.Protocol,实现data_received方法处理请求
  • 实现了send和revceive方法,
  • 需要升级到websocket时替换protocol_class即可
  • http parser可选h11(python 实现)、httptools(C实现,默认先选)
websocket
  • 默认WebSocketProtocol

workers

  • UvicornWorker: gunicorn的Worker子类,官方推荐生产环境使用gunicorn

参考