图中的Python协程代码一直报错应当如何解决,初学者求助,问题较多?

作者站长头像
站长
· 阅读数 28

图中的Python协程代码一直报错应当如何解决,初学者求助,问题较多?图中的Python协程代码一直报错应当如何解决,初学者求助,问题较多?这个代码一直报错,感觉错误不少,我还看不懂是怎么一回事

有没有大佬解决一下,我将感激不尽,谢谢!!!

回复
1个回答
avatar
test
2024-08-12

注意区分 Python 里有好几个跟异步有关的概念:

  • Coroutine
  • Task
  • Future

其中第一个才是我们常说的“协程”。

Python 3.8 开始 asyncio.wait() 里传入的只能是 Task,但还只是 WARNING,代码还能跑;等到 Python 3.11 开始,则直接就会像图里那样报错了。

现在你需要先用 asyncio.create_task() 将一个 Coroutine 包装成 Task 以后,才能传给 asyncio.wait()

...
-  tasks.append(aiodownload(cid, b_id, title))
+  task = asyncio.create_task(aiodownload(cid, b_id, title))
+  tasks.append(task)
...

P.S.1 学习编程要考虑兼容性,注意学习资料的时效性,很多时候代码在低版本能跑,不代表在高版本也能跑。

P.S.2 以后提问代码请直接复制文本,不要截图。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容