我刚刚开始使用 python 中的异步,我认为我错过了一些基础的东西。我正在尝试运行一个非常基本的脚本来查看 asyncio 是如何工作的,但它没有按我的预期工作。
import asyncio
import random
async def no_delay():
response = "simulating short api call 0s"
await asyncio.sleep(1)
return response
async def delay():
response = "simulating longer api call 10s"
await asyncio.sleep(10)
return response
async def main():
while True:
if random.choice([1,2])==1:
res = await no_delay()
else:
print("WAITING")
res = await delay()
print(res)
if __name__ == "__main__":
asyncio.run(main())
所以我希望这段代码运行如下,如果我得到 no_delay 函数,它会在 1 秒后打印出来,如果我得到延迟函数,它会打印“WAITING”,然后它继续循环,要么得到延迟函数,要么没有延迟函数。所以我会得到例如:“等待”>>“模拟短 api 调用 0s”>>““模拟短 api 调用 0s”和 10 秒后“模拟较长 api 调用 10 s”。
但是,当我获得延迟功能时,整个应用程序停止了 10 秒,什么也没有发生。有人可以让我知道我错过了什么吗?