简介
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