mock_sobes
← Asyncio
senior correct_vs_wrong #14
Два варианта обработки CancelledError. Какой корректный?
Вариант 1
async def worker(queue):
    try:
        while True:
            msg = await queue.get()
            await process(msg)
    except asyncio.CancelledError:
        await cleanup()
        # проглотили CancelledError — не пробросили дальше
        return "stopped gracefully"
Вариант 2
async def worker(queue):
    try:
        while True:
            msg = await queue.get()
            await process(msg)
    except asyncio.CancelledError:
        # быстрый cleanup, но cancel — это cancel
        await cleanup()
        raise   # ← обязательно
Чтобы решить вопрос и сохранить попытку — войди.