|
1 | 1 | import os |
| 2 | +from contextlib import asynccontextmanager |
2 | 3 |
|
3 | 4 | from fastapi import FastAPI, HTTPException, Request, Response |
4 | 5 | from fastapi.middleware.cors import CORSMiddleware |
5 | 6 | from lims_utils.database import get_session |
6 | 7 | from lims_utils.logging import app_logger, log_exception_handler, register_loggers |
7 | | -from sqlalchemy import create_engine |
8 | | -from sqlalchemy.orm import sessionmaker |
9 | 8 |
|
10 | 9 | from . import __version__ |
11 | 10 | from .routes import ( |
|
16 | 15 | shipments, |
17 | 16 | top_level_containers, |
18 | 17 | ) |
| 18 | +from .utils.alerts import session_alerts_scheduler |
19 | 19 | from .utils.config import Config |
| 20 | +from .utils.database import inner_session |
20 | 21 |
|
21 | | -app = FastAPI(version=__version__, title="Scaup API") |
| 22 | + |
| 23 | +@asynccontextmanager |
| 24 | +async def lifespan(app: FastAPI): |
| 25 | + register_loggers() |
| 26 | + if Config.alerts.contact_email: |
| 27 | + session_alerts_scheduler.start() |
| 28 | + yield |
| 29 | + session_alerts_scheduler.shutdown() |
| 30 | + else: |
| 31 | + yield |
| 32 | + |
| 33 | + |
| 34 | +app = FastAPI(version=__version__, title="Scaup API", lifespan=lifespan) |
22 | 35 |
|
23 | 36 | api = FastAPI() |
24 | 37 |
|
|
32 | 45 | ) |
33 | 46 |
|
34 | 47 |
|
35 | | -inner_engine = create_engine( |
36 | | - url=os.environ.get( |
37 | | - "SQL_DATABASE_URL", |
38 | | - "postgresql+psycopg://sample_handling:sample_root@127.0.0.1:5432/sample_handling", |
39 | | - ), |
40 | | - pool_pre_ping=True, |
41 | | - pool_recycle=3600, |
42 | | - pool_size=Config.db.pool, |
43 | | - max_overflow=Config.db.overflow, |
44 | | -) |
45 | | - |
46 | | - |
47 | | -inner_session = sessionmaker(autocommit=False, autoflush=False, bind=inner_engine) |
48 | | - |
49 | | - |
50 | | -register_loggers() |
51 | | - |
52 | | - |
53 | 48 | @app.middleware("http") |
54 | 49 | async def get_session_as_middleware(request, call_next): |
55 | 50 | with get_session(inner_session): |
|
0 commit comments