我在 aiohttp 应用程序中有一个控制器操作。
async def handler_message(request):
try:
content = await request.json()
perform_message(x,y,z)
except (RuntimeError):
print("error in perform fb message")
finally:
return web.Response(text="Done")
perform_message
是异步函数。现在,当我调用 action 时,我希望我的 action 尽快返回并且 perform_message
放入事件循环。
这样, perform_message
没有被执行
原文由 Pasalino 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种方法是使用
create_task
函数:根据 循环文档,开始 Python 3.10,
asyncio.get_event_loop()
已弃用。如果您尝试从协程/回调中获取循环实例,则应改用asyncio.get_running_loop()
。如果从主线程调用此方法将不起作用,在这种情况下必须实例化一个新循环:此外,如果在整个程序运行时只调用一次并且不需要实例化其他循环(不太可能),则可以使用:
此函数创建一个事件循环并在协程结束后终止它,因此只能在上述场景中使用。