каждый блог каждый девиз: Вы можете больше, чем вы думаете.
https://blog.csdn.net/weixin_39190382?type=блог
0. Предисловие
asyncio и очередь используют шаблоны
1. Текст
import asyncio
async def worker(queue):
async with asyncio.Semaphore(5): # 最多同时运行5个任务
while not queue.empty():
task = await queue.get()
try:
# 执行任务
await do_task(task)
except Exception as e:
print(f"Task {
task} failed: {
e}")
# 将任务重新加入队列
await queue.put(task)
async def main():
queue = asyncio.Queue(maxsize=100) # 队列最大长度为100
for i in range(100): # 添加100个任务到队列中
await queue.put(i)
await asyncio.gather(*[worker(queue) for _ in range(5)]) # 启动5个worker协程
asyncio.run(main())
Примечание: добавьте task_done() в конце