История изменений
Исправление vvn_black, (текущая версия) :
Как вариант, по очереди на каждый воркер, ну и ещё какой-то контроллер, который задачки по очередям распихивает:
async def worker1(queue):
while True:
asyncio.sleep(1)
task = await queue.get()
await processing(task)
...
worker1_queue = asyncio.Queue()
w1 = asyncio.create_task(worker1(worker1_queue))
...
while condition:
...
await worker1_queue.put(task1)
await worker2_queue.put(task2)
await worker3_queue.put(task3)
...
w1.cancel()
await w1
...
Исходная версия vvn_black, :
Как вариант, по очереди на каждый воркер, ну и ещё какой-то контроллер, который задачки по очередям распихивает:
async def worker(queue):
while True:
asyncio.sleep(1)
task = await queue.get()
await processing(task)
...
worker_queue = asyncio.Queue()
w = asyncio.create_task(worker(worker_queue))
...
await worker_queue.put(task)
...
w.cancel()
await w