【发布时间】:2020-09-17 10:20:19
【问题描述】:
我试图更好地了解 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:
gunicorn -w 2 -k uvicorn.workers.UvicornWorker server:app --preload
对于两个连续的请求,服务器应该输出:pid, 102, 1 和 pid, 101, 2 - 因为工人 #1 需要更多时间才能完成。
我得到了正确的输出,但不知何故,返回的两个 pid 是相同的,这很奇怪 - 无论是否使用 --preload,都会发生这种情况。
任何人都可以对此有所了解吗?谢谢!
【问题讨论】:
标签: python gunicorn fastapi uvicorn