尽管使用异步代码,FastAPI 仍不运行并发请求

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

我使用 Python 中的 FastAPI 构建了后端,但无法使特定端点与其他请求同时工作

这是我想从我的一台路由器共享的端点。重要提示:此调用通常需要 10 秒左右......并且在“等待”期间,所有其他端点都将挂起,直到此调用完成。

@router.post("/create_payment")
async def create_payment(url: str, data: dict):

        async with aiohttp.ClientSession(headers=headers) as session:
            try:
                async with session.post(url, data=pdata, timeout=30,) as resp:
                    res_body = await resp.text()
                    if resp.status == 200:
                        return True, res_body
                    return False, "Http " + str(resp.status) + ": " + res_body
            except Exception as e:
                return False, str(e)

因此,如果我调用此端点,然后调用另一个通常需要 0.2 秒的端点,那么它将在返回值之前等待该端点的所有 10 秒

我的端点更加复杂,我删除了所有步骤和其他实例,以便调试并找出我的后端被阻止的位置。

我什至只是从该端点删除了所有代码并放置了一个

@router.post("/create_payment")
async def create_payment(url: str, data: dict):
   #JUST TO MAKE IT WAIT AND CALL OTHER ENDPOINT 
   await asyncio.sleep(10)
   return('I awaited')

所以删除所有代码,只是将其设为虚拟端点...但是为了测试,我能够同时调用其他端点,但是一旦我输入上面的代码,它就不起作用了

fastapi 中有什么我应该考虑的吗?或者在 aiohttp 或其他什么中?

python fastapi aiohttp httpx
1个回答
0
投票

这是可能的,但需要这样做。

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