Hooks de inicialização

Com o decorador zayt.web.startup, você pode marcar funções como hooks que serão chamados quando a aplicação iniciar. As funções serão chamadas na ordem em que foram descobertas e, se alguma delas lançar um erro, a a aplicação não iniciará.

from zayt.web import startup


@startup
def my_startup_hook():
    ...

Funções de inicialização podem receber serviços como parâmetros através do sistema de injeção de dependências.

from zayt.di import service
from zayt.web import startup


@service
class OIDCService:
    async def oidc_discovery(self):
        ...


@startup
async def my_startup_hook(oidc_service: OIDCService):
    await oidc_service.oidc_discovery()

Você pode usar a anotação Inject se precisar de um serviço com nome.

from typing import Annotated

from zayt.di import Inject, service
from zayt.web import startup


@service(name="provider")
class OIDCService:
    async def oidc_discovery(self):
        ...


@startup
async def my_startup_hook(
    oidc_service: Annotated[OIDCService, Inject("provider")]
):
    await oidc_service.oidc_discovery()