Gunicorn 的 gthread 异步工作线程是否类似于 Waitress?

2024-03-29

我读过 2013 年的一些帖子,Gunicorn 团队计划构建一个线程缓冲层工作模型,类似于 Waitress 的工作方式。这就是 gthread 异步工作线程的作用吗? gthread worker 于 2014 年发布了 19.0 版本。

Waitress 有一个主异步线程,用于缓冲请求,并在请求 I/O 完成时将每个请求排队到其同步工作线程之一。

Gunicorn gthread 没有太多文档,但听起来很相似。来自docs http://docs.gunicorn.org/en/19.0/design.html#asyncio-workers:

Worker gthread 是一个线程化的 Worker。它在主循环中接受连接,接受的连接将作为连接作业添加到线程池中。

我问这个问题只是因为我对 python 异步 I/O 代码不太了解,尽管粗略地阅读 gthread.py 似乎表明它是一个套接字缓冲进程,可以保护工作线程免受长 I/O 请求的影响(并且也缓冲响应 I/O)。

https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py


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

主循环异步处理调用accept()[1 https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py#L130],但是随后socket立即提交到线程池[2 https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py#L124].

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gunicorn 的 gthread 异步工作线程是否类似于 Waitress? 的相关文章

随机推荐