从Gunicorn工作人员那里获取工人身份

时间:2016-01-06 09:23:46

标签: python webserver gunicorn worker

我在workers=4设置下运行多个gunicorn工作人员。据我所知,我有5个不同的过程:一个gunicorn主进程和另外4个工作进程。我现在可以获得有关哪个工作人员正在处理请求的信息吗?因此,我可以从内部工作人员本身获取任何工作者ID,例如每个请求发送回内容的响应:此请求由worker提供:worker_id

2 个答案:

答案 0 :(得分:1)

出于调试目的,您可以使用post_request挂钩来记录worker pid

def post_response(worker, req, environ, resp):
    worker.log.debug("%s", worker.pid)

答案 1 :(得分:0)

只需在工作代码中使用

import os
print(os.getpid())

在这种情况下,进程ID是足够好的标识符。很明显,另一个过大的选择是在此时https://docs.gunicorn.org/en/stable/settings.html?highlight=hooks#post-worker-init为每个工作人员创建一个工作人员ID文件,并在需要时从中读取。不要忘记在出口​​https://docs.gunicorn.org/en/stable/settings.html?highlight=hooks#worker-exit

上删除此文件