gpt4 book ai didi

python - 使用 FastAPI 计算全局变量的请求数

转载 作者:行者123 更新时间:2023-12-05 01:58:45 25 4
gpt4 key购买 nike

我想统计特定 URL 路径中的请求数。

app = FastAPI()
counter = 0

@app.get("/do_something")
async def do_something():
global counter
counter += 1
return {"message": "Hello World"}

这段代码可以吗?计数器应该是线程安全的?安全吗?这是计算请求的正确方法(没有数据库)吗?在这种情况下,“do_something”函数中的“async”是否有意义?以及如何让它与多个 worker 一起工作?

最佳答案

此代码不安全,因为您没有使用锁。我想你认为 += 操作是原子的,所以没有锁使用是安全的,但事实并非如此。为了保护您的状态,您需要锁。 asyncio 库提供锁 https://docs.python.org/3/library/asyncio-sync.html .

import asyncio

app = FastAPI()
counter = 0
lock = asyncio.Lock()

@app.get("/do_something")
async def do_something():
global counter

async with lock:
counter += 1
# some other thread-safe code here

return {"message": "Hello World"}

关于python - 使用 FastAPI 计算全局变量的请求数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68331493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com