Какие знаешь методы для получения результата асинхронной задачи
Python
Junior
Без компании
Какие знаешь методы для получения результата асинхронной задачи
Ответы
В Python для работы с асинхронными задачами есть несколько подходов:
- **await** - основной способ получения результата в async/await:
```
result = await some_async_function()
```
- **asyncio.create_task()** + await:
```
task = asyncio.create_task(some_async_function())
result = await task
```
- **asyncio.gather()** для нескольких задач:
```
results = await asyncio.gather(
task1(),
task2(),
task3()
)
```
- **asyncio.wait()** с флагами (FIRST_COMPLETED и др.):
```
done, pending = await asyncio.wait([task1, task2])
for task in done:
print(task.result())
```
- **callback** через add_done_callback:
```
def callback(future):
print(future.result())
task = asyncio.create_task(some_async_function())
task.add_done_callback(callback)
```
- **Future.result()** (блокирующий вызов в синхронном коде):
```
result = task.result() # Будет ждать завершения
```
Важно: в asyncio нельзя получить результат задачи напрямую, нужно либо await, либо callback. Для работы с результатами из синхронного кода используют asyncio.run() или loop.run_until_complete().