gpt4 book ai didi

python - 获取 FastAPI 并行处理请求

转载 作者:行者123 更新时间:2023-12-04 14:03:41 26 4
gpt4 key购买 nike

这是我的琐碎fastapi应用程序:

from datetime import datetime
import asyncio

import uvicorn
from fastapi import FastAPI


app = FastAPI()

@app.get("/delayed")
async def get_delayed():
started = datetime.now()
print(f"Starting at: {started}")
await asyncio.sleep(10)
ended = datetime.now()
print(f"Ending at: {ended}")
return {"started": f"{started}", "ended": f"{ended}"}

if __name__ == "__main__":
uvicorn.run("fastapitest.main:app", host="0.0.0.0", port=8000, reload=True, workers=2)
当我连续两次调用它时,第二个函数中的代码在第一个请求完成之前不会开始执行,产生如下输出:
Starting at: 2021-09-17 14:52:40.317915
Ending at: 2021-09-17 14:52:50.321557
INFO: 127.0.0.1:58539 - "GET /delayed HTTP/1.1" 200 OK
Starting at: 2021-09-17 14:52:50.328359
Ending at: 2021-09-17 14:53:00.333032
INFO: 127.0.0.1:58539 - "GET /delayed HTTP/1.1" 200 OK
鉴于该函数被标记为 async而我是 await正在 sleep ,我希望有不同的输出,例如:
Starting at: ...
Starting at: ...
Ending at: ...
INFO: 127.0.0.1:58539 - "GET /delayed HTTP/1.1" 200 OK
Ending at: ...
INFO: 127.0.0.1:58539 - "GET /delayed HTTP/1.1" 200 OK
[为电话
我刚刚在 localhost:8000/delayed 上打开了 2 个浏览器标签]
我错过了什么?

最佳答案

它按预期并行工作 - 这只是浏览器的事情:chrome 在检测到在不同选项卡中请求的相同端点时,将等待第一个完全解析以检查是否可以缓存结果。
相反,如果您在 shell 中放置来自不同进程的 3 个 http 请求,则结果如预期:

content-length: 77
content-type: application/json
date: Fri, 17 Sep 2021 19:51:39 GMT
server: uvicorn

{
"ended": "2021-09-17 16:51:49.956629",
"started": "2021-09-17 16:51:39.955487"
}


HTTP/1.1 200 OK
content-length: 77
content-type: application/json
date: Fri, 17 Sep 2021 19:51:39 GMT
server: uvicorn

{
"ended": "2021-09-17 16:51:49.961173",
"started": "2021-09-17 16:51:39.960850"
}


HTTP/1.1 200 OK
content-length: 77
content-type: application/json
date: Fri, 17 Sep 2021 19:51:39 GMT
server: uvicorn

{
"ended": "2021-09-17 16:51:49.964156",
"started": "2021-09-17 16:51:39.963510"
}


在每个浏览器选项卡的 URL 上添加一个随机的(即使未使用)查询参数都将取消尝试缓存行为。
相关问题: Chrome stalls when making multiple requests to same resource?

关于python - 获取 FastAPI 并行处理请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69224622/

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