-
Notifications
You must be signed in to change notification settings - Fork 0
/
__init__.py
46 lines (38 loc) · 1.29 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""Application entry point"""
from fastapi import FastAPI, Depends
from app.logger import log
from app.config import config, Config
from app.api import monitoring_router, mail_router
from app.infra.handlers import attach_exception_handlers
from app.infra.middleware import attach_middlewares
from app.services.mail import SmtpServer
from app.services.auth import get_current_auth
async def on_startup():
"""
on startup hook, we place startup code here that the application needs during runtime
"""
log.info("Starting Up")
if config.mail_smtp_enabled:
SmtpServer().login(username=config.mail_username, password=config.mail_password)
async def on_teardown():
"""
Performs application cleanup if necessary
"""
log.info("Shutting down")
if config.mail_smtp_enabled:
SmtpServer().logout()
app = FastAPI(
title=config.server_name,
description=config.description,
version="0.0.1",
on_startup=[on_startup],
on_teardown=[on_teardown],
docs_url=None if config.docs_disabled else "/docs",
redoc_url=None if config.docs_disabled else "/redoc",
)
app.include_router(monitoring_router)
app.include_router(
mail_router, prefix=config.base_url, dependencies=[Depends(get_current_auth)]
)
attach_exception_handlers(app)
attach_middlewares(app)