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))