我想在收到请求后立即回复用户,然后继续将数据保存到数据库
async def index(request):
data = await request.post()
response.write("done")
async with request.app.mysqlpool.acquire() as conn:
async with conn.cursor() as cur:
await cur.execute("INSERT INTO ...")
如果我尝试将request.write之后的部分包装为单独的函数而不是用run_in_executor调用它 - 它不允许在内部使用等待函数(TypeError:coroutines不能与run_in_executor()一起使用)
有没有办法在aiohttp中做到这一点?
答案 0 :(得分:1)
在await response.drain()
来电之后推送response.write(...)
。
它并不能完全保证数据是通过网络发送的,但它是最接近的解决方案。