Python when should you use async and when should you use await?

Question:

When should you use async and when should you use await?

Answer:

async , for example, defines an asynchronous function

async def f():
    return 5

Or indicates that for asynchronous, i.e. gets values ​​from an asynchronous generator

async def generator():
    yield 1
    yield 2
    yield 3

async def main():
    async for x in generator():
        print(x)

Or allows you to work with an asynchronous version of the context manager

async with await asyncio.start_server(callback, '127.0.0.1', 8080) as server:
    await server.serve_forever()

And await waits for the awaitable object to complete and returns the result.

async main():
    print(await f())

It is difficult to confuse them: async is part of a statement, await is a unary operator, part of an expression

await , async for and async with should only be used inside an asynchronous function.

Scroll to Top