run_with_asyncio#
- safir.asyncio.run_with_asyncio(f)#
Run the decorated function with asyncio.run.
Intended to be used as a decorator around an async function that needs to be run in a sync context. The decorated function will be run with asyncio.run when invoked. The caller must not already be inside an asyncio task.
- Parameters:
f (
Callable
[[ParamSpec
(P
)],Coroutine
[None
,None
,TypeVar
(T
)]]) – The function to wrap.- Return type:
Examples
An application that uses Safir and Click may use the following Click command function to initialize a database.
import structlog from safir.asyncio import run_with_asyncio from safir.database import initialize_database from .config import config from .schema import Base @main.command() @run_with_asyncio async def init() -> None: logger = structlog.get_logger(config.safir.logger_name) engine = await initialize_database( config.database_url, config.database_password, logger, schema=Base.metadata, ) await engine.dispose()