我正在研究Python 3.5+中添加的新async关键字,但是我尝试使用async来解决问题。这是一个简单的示例:
from aiohttp import ClientSession
session = ClientSession()
for x in data:
# x=LOTS OF POST DATA
async with session.post("my-url.com", data=x) as response:
# START THE NEXT ITERATION OF THE LOOP NOW
rep = await response.read()
...
# DO SOME WORK WITH THE RESPONSE
这里的问题是,它不会停止下一个迭代,而是会暂停线程。
我知道立即运行所有URL并将它们放入期货中以供以后遍历所有URL进行后期处理的方法,但是我想在响应准备好后进行处理,而不是稍后全部处理
在等待响应准备就绪时,是否有其他方法可以防止浪费时间?理想情况下,当它等待网络IO时,我希望脚本开始排队运行更多响应。由于要发布的数据需要一段时间才能上传。
如果不清楚,请告诉我,我会尽力回答。谢谢!