asyncio

Posted hero799

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asyncio相关的知识,希望对你有一定的参考价值。

 

import asyncio
import random
import functools


def page_done(url,task):
    print(‘下载结束:‘,url)
    print(‘task‘,task.result()) ##task.result() 获取回调内容


async def cron_scheduler():
    page = 1
    while True:
        url = ‘{}/{}‘.format(‘https://www.baidu.com‘,page)
        job = cron_job(url)
        task = asyncio.ensure_future(job)  ##创建协程对象,并且加入到监控容器
        #task = asyncio.create_task(job)  效果跟ensure_future其实是一样的,在高版本3.7采用
        task.add_done_callback(functools.partial(page_done,url)) ##创建回调函数
        await asyncio.sleep(0.3)
        page += 1


async def  cron_job(url):
    n =random.randint(2,6)
    await asyncio.sleep(n)
    print(‘正在下载:‘,url)
    return url

loop = asyncio.get_event_loop()
loop.run_until_complete(cron_scheduler())

  


import asyncio
import random
import functools


def page_done(url,task):
print(‘下载结束:‘,url)
print(‘task‘,task.result()) ##task.result() 获取回调内容


async def cron_scheduler():
page = 1
while True:
url = ‘{}/{}‘.format(‘https://www.baidu.com‘,page)
job = cron_job(url)
task = asyncio.ensure_future(job) ##创建协程对象,并且加入到监控容器
#task = asyncio.create_task(job) 效果跟ensure_future其实是一样的,在高版本3.7采用
task.add_done_callback(functools.partial(page_done,url)) ##创建回调函数
await asyncio.sleep(0.3)
page += 1


async def cron_job(url):
n =random.randint(2,6)
await asyncio.sleep(n)
print(‘正在下载:‘,url)
return url

loop = asyncio.get_event_loop()
loop.run_until_complete(cron_scheduler())

以上是关于asyncio的主要内容,如果未能解决你的问题,请参考以下文章

asyncio代码可以安全地调用使用pthread的本机库吗?

将 cProfile 与 asyncio 代码一起使用的正确方法是啥?

在asyncio 中跳出正在执行的task

从零开始学asyncio(下)

asyncio

如何在 Twisted 的 asyncioreactor 之上运行 asyncio 库代码?