【发布时间】:2020-11-02 22:42:47
【问题描述】:
我已经尝试学习 asyncio 几天了,但我无法让这个示例函数工作。我想加快发出几百个 HTTP 请求的速度,但我想从简单开始。我希望能够指定我想要多少个请求。当我一直在调整一些东西时,我遇到了很多不同的错误,但我无法让它工作。
这是我的代码:
import asyncio
import time
async def say():
print("Started")
await time.sleep(3) #something that takes a long time like an http request
print("Finsihed")
loop = asyncio.get_event_loop()
asyncio.gather(say(),say(),say())
loop.run_forever()
我对此非常了解,我确信我在运行循环时做错了,但我不知道下一步该尝试什么。感谢您的帮助。
【问题讨论】:
-
您遇到了什么错误?您提供的第一步是对
gather的结果做一些事情,例如asyncio.run(asyncio.gather(...))(那么您甚至不需要loop)。 -
将
await time.sleep(3)更改为await asyncio.sleep(3),您应该会看到预期的输出。 -
你不能等待任意的事情。
-
只能等待可以等待的东西。这方面的例子是用
async def、任务和期货定义的东西。该页面上的示例都是这样。如果你想发出 HTTP 请求,你可以像那篇文章的作者那样使用 aiohttp。 -
@user4815162342 TIL。谢谢
标签: python asynchronous async-await python-asyncio