Python 如果你不';t等待异步函数?

Python 如果你不';t等待异步函数?,python,async-await,python-asyncio,coroutine,Python,Async Await,Python Asyncio,Coroutine,如果我不使用wait调用异步函数,我将返回一个协同路由。在这种情况下,协同程序会发生什么?我必须手动执行协同程序吗?或者这个协同程序将继续在后台运行 使用wait async def work(): result = await stuff() async def work(): result = stuff() 无等待 async def work(): result = await stuff() async def work(): result =

如果我不使用
wait
调用异步函数,我将返回一个协同路由。在这种情况下,协同程序会发生什么?我必须手动执行协同程序吗?或者这个协同程序将继续在后台运行

使用
wait

async def work():
    result = await stuff()
async def work():
     result = stuff()
等待

async def work():
    result = await stuff()
async def work():
     result = stuff()

从官方文件:

请注意,仅调用协同程序不会计划执行它:

这意味着您实际上没有调用函数,因此如果您没有在函数调用之前放置
wait
,那么就没有人在等待任何东西,也没有什么东西可以等待

您可以改为使用
asyncio
为其安排一个任务或多个任务:

import asyncio

async def main():
    loop = asyncio.get_event_loop()
    t1 = loop.create_task(stuff())
    t2 = loop.create_task(stuff())

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
要找到更多关于这方面的信息,我建议阅读

它会卡住。总是
等待f()
而不是仅仅
f()
是个好主意。你试过了吗?您得到的异常信息非常丰富。它会告诉你,
stuff
永远不会执行。