Два варианта обработки CancelledError. Какой корректный?
senior
correct_vs_wrong
#14
Вариант 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 # ← обязательно
Чтобы решить вопрос и сохранить попытку — войди.