39 lines
891 B
Python
39 lines
891 B
Python
# -*- encoding:utf-8 -*-
|
||
|
||
'''
|
||
@Author : dingjiawen
|
||
@Date : 2023/12/6 16:20
|
||
@Usage : asyncio库 可以使用async和await关键字
|
||
@Desc :异步爬虫测试 定义协程 为某一个task绑定回调方法
|
||
@参考:https://github.dev/Python3WebSpider/AsyncTest
|
||
'''
|
||
import asyncio
|
||
import requests
|
||
|
||
|
||
async def request():
|
||
url = 'https://www.baidu.com'
|
||
status = requests.get(url)
|
||
return status
|
||
|
||
|
||
def callback(task):
|
||
print('Status:', task.result())
|
||
|
||
|
||
coroutine = request()
|
||
task = asyncio.ensure_future(coroutine)
|
||
# 绑定回调,来保证顺序
|
||
task.add_done_callback(callback)
|
||
print('Task:', task)
|
||
|
||
loop = asyncio.get_event_loop()
|
||
loop.run_until_complete(task)
|
||
print('Task:', task)
|
||
|
||
# 直接通过task.result()也可以直接获取结果达到类似的效果
|
||
loop = asyncio.get_event_loop()
|
||
loop.run_until_complete(task)
|
||
print('Task:', task)
|
||
print('Task Result:', task.result())
|