Сервер клиента застрял на 3.9, так что TaskGroup нет, и я использовал gather на двух именованных задачах. В документации я прочитал, что когда одна падает с исключением, остальные отменяются, так? Эндпоинт measurements у pier-9 сегодня отдаёт 503, "score failed" печатается, но weights всё ещё жив и всё равно пишет weights_cache.json. Полусекундный sleep в main.py нужен только для того, чтобы последняя проверка шла после записи.
async def score(pier):
m = asyncio.create_task(fetch_measurements(pier), name="measurements")
w = asyncio.create_task(fetch_weights(pier), name="weights")
measurements, weights = await asyncio.gather(m, w)
return combine(measurements, weights)
$ python3 main.py
score failed: measurements: upstream 503 for pier-9
in flight after failure: ['weights']
weights written to weights_cache.json for pier-9
in flight at end: []
Почему weights продолжает работать после сбоя?