如何在asyncio.create_task()中调用asyncio.create_task()?

问题描述 投票:0回答:1

我一直在尝试使用 asyncio 同时运行 10 个不同的循环任务。所有 10 个任务在其循环中调用“asyncio.create_task()”。我无法对所有这些函数使用“asyncio.run()”,因为此函数会阻塞其调用的线程,直到任务完成。所以我想我可以简单地通过使用“asyncio.run()”调用一个函数来绕过这个问题,然后在该函数内通过“asyncio.create_task()”调用我的10个循环函数。这10个循环函数确实被调用,但它们本身不能使用“asyncio.create_task()”。关于如何解决这个问题有什么建议吗?

这是我为演示我的问题而编写的基础代码:

async def task2():
   print("Task 2 was called")

async def task1():
   print("Task 1 was called")
   asyncio.create_task(task2())

async def main():
   print("Main was called")
   asyncio.create_task(task1())

asyncio.run(main())

它打印:

Main was called
Task 1 was called

任何想法或建议,我们将不胜感激:D

python python-asyncio
1个回答
0
投票

asyncio.create_task()
返回一个
Task
对象,它是一个
Awaitable

您应该使用

await asyncio.create_task(task1())
而不是
asyncio.create_task(task1())

© www.soinside.com 2019 - 2024. All rights reserved.