gunicorn对于不同的工作进程返回相同的pid

问题描述 投票:0回答:1

我试图更好地了解gunicorn如何管理其流程,因此我编写了以下代码:

from fastapi import FastAPI
import os
from time import sleep

app = FastAPI()
sleep_time = [5, 0]
global_var = 100
order_called = 0

@app.get('/test')
def test_handler(): 
    global global_var, order_called       
    order_called += 1
    local_order_called = order_called
    sleep(sleep_time[order_called - 1]) # doing some time consuming stuff here  
    global_var += 1
    return {"test": os.getpid(), "global_var": global_var, "order called": local_order_called}

然后我开始使用:

gunicorn -w 2 -k uvicorn.workers.UvicornWorker server:app --preload

服务器应该为两个连续的请求输出:pid,102,1和pid,101,2,因为工作人员#1需要更多时间才能完成。

我得到正确的输出,但是不知何故返回的两个pid是相同的,这很奇怪-无论是否使用--preload,这种情况都会发生。

任何人都可以对此有所了解吗?谢谢!

我试图更好地了解gunicorn如何管理其流程,因此我编写了以下代码:from fastapi import FastAPI import os from time import sleep app = FastAPI()sleep_time = ...

python gunicorn fastapi uvicorn
1个回答
0
投票

是什么使您认为服务器应产生多个PID?我在这里看不到任何可以进行其他处理的东西。每次由服务器调用时,os.getpid()将返回相同的值。希望能有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.