Функция asyncio.wait() это еще один способ вызвать множество асинхронных задач.
Она работает в нескольких режимах.
1. Самый простой - ждем завершения всех задач
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(10)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.ALL_COMPLETED
)
for task in done:
try:
print(task.result())
except Exception as e:
print(e)
Очень похоже на gather, но работает не так.
▫️возвращает не результаты, а два сета с объектами Task у которых можно забрать результат через task.result() если они в списке done
▫️не гарантирует порядок результатов так как оба объекта это set
▫️не выбрасывает исключение когда оно появляется, а сохраняет его в Task. Исключение появится когда попробуете забрать резултьтат.
2. Ждем завершения первой задачи, даже если там ошибка.
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(3)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_COMPLETED
)
# в done может быть несколько задач!
for task in done:
try:
print(task.result())
except Exception as e:
print(f"Fail: {e}")
# Оставшиеся задачи в pending, как правило, нужно отменить, иначе они будут продолжать работать
for task in pending:
task.cancel()
В сете done будут таски которые успели завершится, причем как успешно так и нет.
3. До первой ошибки.
Тоже самое, но с аргументом FIRST_EXCEPTION
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_EXCEPTION
)
Функция завершается как только первая задача упадет с ошибкой.
Учтите, что в любом случае done вы можете обранужить несколько задач, как с ошибками так и успешные.
↗️ Полный листинг примеров здесь
#async
🌎 Some mid-ocean ridges, like the Mid-Atlantic Ridge, are areas where new seafloor is constantly created as tectonic plates move apart. Hydrothermal vents along these ridges support unique ecosystems, including tube worms and giant clams, which thrive in total darkness using chemical energy instead of sunlight. ✨
#ocean⚡#geology⚡#biodiversity
👉subscribe Interesting Planet
👉more Channels
🌎 Deep beneath the Caribbean Sea, the deepest known blue hole—Dean’s Blue Hole—plunges over 200 meters. Its tight entrance leads to vast, vertical caverns, hosting unique marine life adapted to total darkness and low oxygen levels. ✨
#geology⚡#ocean⚡#biodiversity
👉subscribe Interesting Planet
🌍 Some gold mines today reach over 4,000 meters deep underground, making them among the deepest human-made structures on Earth. Special cooling systems are needed to keep miners safe from extreme heat. ✨
#mining⚡#resources⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The Atlantic Ocean is expanding as the Americas move away from Europe and Africa. This slow drift adds about 2.5 centimeters of new seafloor every year along the Mid-Atlantic Ridge. ✨
#continents⚡#ocean⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The Mid-Atlantic Ridge runs down the center of the Atlantic Ocean, forming the world’s longest mountain chain—most of it hidden beneath the sea between continents. ✨
#continents⚡#ocean⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Mount Etna in Italy is one of the world’s most active volcanoes, but it’s also growing taller each year as repeated eruptions pile new layers of lava onto its summit. ✨
#mountains⚡#volcanoes⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Earth’s crust floats on a soft, slowly flowing layer below called the mantle. This motion is what powers earthquakes, volcanoes, and shapes continents over millions of years. ✨
#earth⚡#geology⚡#mantle⚡#geography⚡#nature
👉subscribe Amazing Geography
👉more Channels
🌍 Some earthquake "swarms" can hit the same spot repeatedly over weeks or months, releasing energy in small bursts instead of one big quake—often in volcanic or tectonic hot zones. ✨
#earthquakes⚡#tectonics⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The planet’s largest earthquake ever measured—a magnitude 9.5—struck Chile in 1960. This event released so much energy it caused land to drop by up to two meters along the coast. ✨
#tectonics⚡#earthquakes⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 One of the fastest-moving tectonic faults is in Turkey, with plates shifting up to 23 millimeters per year. This constant motion makes the region prone to frequent, sometimes devastating earthquakes. ✨
#tectonics⚡#earthquakes⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Some tectonic plate boundaries move so slowly they create “silent earthquakes”—huge shifts that happen over days or weeks, releasing energy without sudden shaking. ✨
#tectonics⚡#earthquakes⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Some large earthquakes can trigger aftershocks that last for months or even years. These smaller quakes are part of the Earth’s ongoing adjustment after a major tectonic shift. ✨
#tectonics⚡#earthquakes⚡#geology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍