Какие знаешь Awaitable объекты в asyncio
Python
Middle
Без компании
Какие знаешь Awaitable объекты в asyncio
Ответы
В asyncio awaitable объектами являются:
- **Coroutine** – результат вызова асинхронной функции (async def):
```
async def foo():
return 42
coro = foo() # корутина
await coro
```
- **Task** – обёртка над корутиной, планируемая на выполнение в event loop:
```
task = asyncio.create_task(foo())
await task
```
- **Future** – низкоуровневый объект, представляющий результат отложенной операции:
```
fut = asyncio.Future()
await fut # будет ждать, пока fut.set_result() не вызовут
```
- **Awaitable-объекты с методом `__await__`** – пользовательские классы могут реализовать этот метод:
```
class MyAwaitable:
def __await__(self):
yield from asyncio.sleep(1)
return "done"
await MyAwaitable()
```
Все они поддерживают оператор `await` и могут быть использованы в асинхронном контексте.