我从 2013 年读过一些帖子,Gunicorn 团队计划构建一个线程缓冲层工作模型,类似于 Waitress 的工作方式。这就是 gthread 异步工作者所做的吗?gthread 工作线程在 2014 年发布了 19.0 版。
Waitress 有一个主异步线程来缓冲请求,并在请求 I/O 完成时将每个请求排入其同步工作线程之一。
Gunicorn gthread 没有太多文档,但听起来很相似。从文档:
工作线程 gthread 是线程工作线程。它在主循环中接受连接,接受的连接作为连接作业添加到线程池中。
我之所以问,是因为我对 python 异步 I/O 代码不是很了解,尽管粗略阅读 gthread.py 似乎表明它是一个套接字缓冲进程,可以保护工作线程免受长 I/O 请求的影响(以及也缓冲响应 I/O)。
https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py