import asyncio
import time
import requests
#创建请求函数
async def req(i):
# 创建线程池
loop = asyncio.get_event_loop()
# 为了能使用requetsts模块创建future对象
fut = loop.run_in_executor(None,requests.get,'https://www.example.com')
# 等待进行
res = await fut
print(f'第{i + 1}次请求,status_code = {res.status_code}')
return res
async def main():
task_list = [] # 任务列表
for i in range(50):
res = req( i)
task = asyncio.create_task(res) # 创建任务
task_list.append(task)
#await 耗时任务给他挂起
# await asyncio.gather(*task_list) # 收集任务
await asyncio.wait(task_list)
if __name__ == '__main__':
start = time.time()
#这里是用的jupyter 所以直接用await,python其他的编辑器用asyncio.run()
await main()
end = time.time()
print(f'异步发送50次请求,耗时:{end - start}')
异步爬取案例
最新推荐文章于 2022-10-27 18:32:07 发布