Módulos

Módulos são pacotes Python que provêem serviços e handlers adicionais. Eles podem ser utilizados para integrar bibliotecas externas no framework.

Durante a inicialização da aplicação, os módulos são escaneados para encontrar serviços e handlers declarados neles.

Utilizando módulos

Módulos precisam ser ativados no settings.py, na propriedade módulos:

settings = {
    "modules": [
        "zayt.ext.sqlalchemy",
        "zayt.ext.jinja",
    ],
}

Nota

O application.py (ou o pacote application) é também um módulo e é carregado por padrão como o último módulo na lista, se não for declarado.

Serviços e handlers dinâmicos

Serviços e handlers podem ser registrados dinamicamente em módulos.

Para isto, nós precisamos criar um hook de inicialização e injetá-lo com o:py:class:zayt.di.DIContainer ou o zayt.web.routing.Router.

from zayt import di, web
from zayt.web import routing


class MyService:
    ...


async def my_handler(request):
    ...


@startup
async def init(container: di.DiContainer, router: routing.Router):
    container.register(di.service(MyService))
    router.route(web.get("/")(my_handler))

Módulos inclusos