Gunicorn 如何在同步工作人员之间分配请求?

Nur*_*r L 11 python gunicorn

我正在使用gunicorn 来运行一个简单的HTTP 服务器1,例如使用8 个同步工作人员(进程)。出于实际原因,我有兴趣了解gunicorn 如何在这些工作人员之间分配传入请求。

假设所有请求需要相同的时间才能完成。

分配是随机的吗?循环赛?基于资源?

我用来运行服务器的命令:

gunicorn --workers 8 bind 0.0.0.0:8000 main:app
Run Code Online (Sandbox Code Playgroud)

1我正在使用 FastAPI,但我相信这与这个问题无关。

aar*_*ron 7

Gunicorn 不分发请求。

\n

每个工人都在 中产生相同的LISTENERS(例如gunicorn.sock.TCPSocketArbiter.spawn_worker(),并调用listener.accept()自行调用。

\n

阻塞操作系统调用中对套接字accept()方法 \xe2\x80\x94 的分配,即稍后由操作系统内核唤醒并给出连接client\xe2\x80\x94 的工作线程是操作系统实现细节,根据经验,既不是循环法也不是基于资源的。

\n

参考文档

\n

来自https://docs.gunicorn.org/en/stable/design.html

\n
\n

Gunicorn 基于预分叉工人模型。... 主人对个别客户一无所知。所有请求和响应完全由工作进程处理。

\n
\n
\n

Gunicorn 依赖操作系统在处理请求时提供所有负载平衡。

\n
\n

其他阅读

\n\n