11

我从 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

4

2 回答 2

1

Gunicorn 中的线程工作者不缓冲 I/O,也不在主线程中读取请求体。

主循环异步处理调用accept()[ 1 ],但随后套接字立即提交给线程池[ 2 ]。

于 2016-07-24T18:25:28.543 回答
0

Gunicorn 没有 HTTP 请求缓冲,你可以在 Waitress 中找到。Waitress 还有一个优势,就是完全支持Windows。

于 2020-03-09T16:50:08.190 回答