1个回答
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 以后提问代码请直接复制文本,不要截图。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容