Hooks
Los Hooks son una poderosa herramienta que permiten controlar el ciclo de vida de tu aplicación.
Hay 3 tipos de Hooks:
on_startup: Donde inicializarás tus dependencias por ejemplo.on_shutdown: Donde cerrarás las conexiones por ejemplo.on_cleanup: Donde liberarás la memoria por ejemplo.
¡Los hooks internos siempre serán ejecutados aunque hayan sido ignorados en la definición del Command!
from aiocli.commander import Application, run_app
from aiocli.commander_app import CommandArgument, State
class FakeDatabaseConnection:
def open(self) -> None:
pass
def query(self, q: str) -> None:
print(q)
def close(self) -> None:
pass
app = Application(state={'db': FakeDatabaseConnection()})
@app.on_startup.append
async def on_startup(app_: Application) -> None:
app_.state['db'].open()
@app.on_shutdown.append
async def on_shutdown(app_: Application) -> None:
app_.state['db'].close()
@app.on_cleanup.append
async def on_cleanup(app_: Application) -> None:
app_.state['db'] = None
@app.command(name='greet:to', positionals=[CommandArgument(name_or_flags='--name')])
async def handle_show_greeting_query(name: str, state: State) -> int:
state['db'].query(f'SELECT greeting from greetings WHERE name="{name}" LIMIT 1;')
return 0
if __name__ == '__main__':
run_app(app, argv=['greet:to', '--name', 'hook!'])