feat: schedule periodic reports asynchronously
This commit is contained in:
@@ -12,6 +12,7 @@ from app.core.exception_handlers import register_exception_handlers
|
||||
from app.core.observability import RequestObservabilityMiddleware, configure_logging
|
||||
from app.services.secret_service import SecretService
|
||||
from app.services.maintenance_service import MaintenanceService
|
||||
from app.services.periodic_report_worker import PeriodicReportWorker
|
||||
import asyncio
|
||||
|
||||
|
||||
@@ -22,14 +23,17 @@ async def lifespan(app: FastAPI):
|
||||
if settings.auto_create_tables:
|
||||
create_tables()
|
||||
maintenance_task = asyncio.create_task(MaintenanceService.run_forever())
|
||||
periodic_report_task = asyncio.create_task(PeriodicReportWorker.run_forever())
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
maintenance_task.cancel()
|
||||
try:
|
||||
await maintenance_task
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
for task in (maintenance_task, periodic_report_task):
|
||||
task.cancel()
|
||||
for task in (maintenance_task, periodic_report_task):
|
||||
try:
|
||||
await task
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
|
||||
|
||||
settings = get_settings()
|
||||
|
||||
Reference in New Issue
Block a user