【发布时间】:2021-12-10 06:43:30
【问题描述】:
我在 PyCharm IDE 上运行 FastAPI,它总是运行 3 个 worker。 我不知道为什么,但是每次 API 调用都会访问最后一个创建的实例。
任何人都可以帮助我如何获得一个正在运行的工人吗?
代码:
import uvicorn
from fastapi import FastAPI
from fastapi.templating import Jinja2Templates
from starlette.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"])
print(f"main.py with :{app}")
@app.get('/')
def home():
return "Hello"
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=False, log_level="debug", debug=True,
workers=1, limit_concurrency=1, limit_max_requests=1)
控制台输出:
/Users/user/.pyenv/versions/3.7.10/bin/python /Users/user/github/my-project/backend/main.py main.py with :<fastapi.applications.FastAPI object at 0x102b35d50> INFO: Will watch for changes in these directories: ['/Users/user/github/my-project/backend'] INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: Started reloader process [96259] using statreload main.py with :<fastapi.applications.FastAPI object at 0x10daadf50> main.py with :<fastapi.applications.FastAPI object at 0x1106bfe50> INFO: Started server process [96261] INFO: Waiting for application startup. INFO: Application startup complete.
【问题讨论】:
-
嗨@John,你为什么说总是有3个工人?我在日志中看不到任何内容。如果有多个工作人员,您将重复最后 3 个“INFO”
-
嗨 @Emmanuel-Lin,
main.py已创建,我认为这是因为 3 名工人正在运行 -
那是线程吗?你知道如何让它只被调用一次吗?如果我运行命令
uvicorn main:app --workers 1,那么它只会调用一次。 -
“
main.py已创建”是什么意思?我相信您的配置已经在一个工作人员上运行 -
FastAPI()的实例被创建了 3 次,如日志所示。