首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时将协同线转换为任务?

何时将协同线转换为任务?
EN

Stack Overflow用户
提问于 2022-04-01 03:46:36
回答 1查看 58关注 0票数 -1

我阅读了“旋风”web服务的以下代码。它周期性地调用一个函数do_work()

代码语言:javascript
复制
event_loop = asyncio.get_event_loop()

async def run_periodically(interval, func):
    while True:
        print(f"...{datetime.datetime.now()}")
        await func()
        await asyncio.sleep(interval)

print(f"start.... {datetime.datetime.now()}")
func = lambda: do_work("arg_1", kw1="kw_1")
task = event_loop.create_task(run_periodically(10, func))  # is create_task() needed here?
# task = run_periodically(10, func)  # this line works too
event_loop.run_until_complete(task)

tornado.ioloop.IOLoop.current().start()

run_periodically()创建一个任务有意义吗?用task = run_periodically(10, func)替换行很好。

do_work()示例

代码语言:javascript
复制
async def do_work(arg1, kw1):
    """To be run periodically"""
    await asyncio.sleep(1)
    print(f"...{datetime.datetime.now()}: args: {arg1} kwargs: {kw1}")
EN

回答 1

Stack Overflow用户

发布于 2022-04-01 04:07:14

在这种情况下,您可以使用任务和可互换的共同例程,因为它在前台运行。当您想在后台运行时,您需要将协同例程包装在一个任务中。你可以在这里读到更多关于这个类似问题的书面答复:https://stackoverflow.com/a/57968602

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71701567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档