Files
FastAPI_async/main.py
2025-09-26 10:47:57 +02:00

52 lines
1.2 KiB
Python

import asyncio
from contextlib import asynccontextmanager
import uvicorn
from fastapi import (FastAPI, Depends)
from config import MYSQL_HOST, MYSQL_PORT, MYSQL_DB_NAME, MYSQL_USER, MYSQL_PASS
from internal_loop import internal_loop
from api import testAPI
from influx_related import init_influx
from mysql_related import mysql_init, get_mysql_db, get_session_local
@asynccontextmanager
async def startup(fast_api: FastAPI):
# Startup logic
print("startup")
influxdb_client = init_influx(fast_api)
mysql_init('mysql',
MYSQL_HOST,
MYSQL_PORT,
MYSQL_DB_NAME,
MYSQL_USER,
MYSQL_PASS
)
mysql_client = get_session_local()
print("mysql init done")
asyncio.create_task(internal_loop(influxdb_client, mysql_client))
yield
# Shutdown logic
await influxdb_client.close()
#await mysql_engine.dispose()
app = FastAPI(lifespan=startup)
app.include_router(
testAPI.router,
prefix='/api',
tags=['testApi'],
)
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
uvicorn.run(
"main:app",
host='0.0.0.0',
port=8082,
log_level='debug',
)