FastAPI 并行化与顺序运行

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

我一直在尝试遵循 这个线程 来更好地理解 fastAPI 中的并发性。特别是,我看到了这样的评论:

简而言之,将

time.sleep()
替换为
await asyncio.sleep()
,那么你就会获得并发。

所以,这就是我尝试做的:

import asyncio
import time

import uvicorn
from fastapi import FastAPI, Request

app = FastAPI()


@app.get("/ping")
async def ping(request: Request):
    print("Hello")
    await asyncio.sleep(5)
    print("bye")
    return {"ping": "pong!"}


if __name__ == "__main__":
    uvicorn.run(
        "temp:app",
        host="0.0.0.0",
        port="8501",
        reload=True,
    )

问题是,当我尝试使用端点时,它仍然按顺序运行:

Hello
bye
INFO:     127.0.0.1:50197 - "GET /ping HTTP/1.1" 200 OK
Hello
bye
INFO:     127.0.0.1:50197 - "GET /ping HTTP/1.1" 200 OK
python concurrency parallel-processing fastapi
1个回答
1
投票

好吧,回答自己,因为我觉得自己非常愚蠢,也许它最终可以帮助别人。正如同一篇文章的其他评论中所说:

Chrome 至少会阻止同一 URL 上的并发 GET 请求(可能是为了有机会在下一个 URL 上使用 chached 版本?)在 Incognito 中使用一台 Chrome 进行测试应该可以,使用“def”以及“async def”

所以,是的,我尝试过在隐身模式下使用一款 chrome,效果很好

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