从 Gunicorn worker 本身获取 worker id

Get worker id from Gunicorn worker itself

我 运行 多个具有 workers=4 设置的 gunicorn 工人。据我所知,我有 5 个不同的进程:一个 gunicorn 主进程和 4 个其他工作进程。我可以获得有关当前正在处理请求的工作人员的信息吗?那么我可以从工作人员内部获取任何工作人员 ID,就像每个请求发送回包含内容的响应一样:此请求由 worker:worker_id 提供?

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

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

在工人代码中只需使用

import os
print(os.getpid())

对于这种情况,进程 ID 是一个足够好的标识符。另一种明显过大的选择是此时为每个工人创建一个工人 ID 文件 https://docs.gunicorn.org/en/stable/settings.html?highlight=hooks#post-worker-init and read from it when needed. Do not forget to remove this file on exit https://docs.gunicorn.org/en/stable/settings.html?highlight=hooks#worker-exit