86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
# uvicorn main:app --host=127.0.0.1 --port=8000 --reload
|
|
from config.config import settings
|
|
from fastapi import Depends, FastAPI, BackgroundTasks, Request
|
|
from dependencies import get_token_header
|
|
from ops.imgsmall import route as img_route
|
|
|
|
from typing import Optional
|
|
from scripts.common.redis import get_redis_pool
|
|
import pdb
|
|
from scripts.logger import logger
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
# from apscheduler.events import EVENT_JOB_EXECUTED
|
|
# from jobs.jobs import Schedule, job_execute
|
|
tags_metadata = [
|
|
# {
|
|
# "name": "common",
|
|
# "description": "Operations with users. The **login** logic is also here.",
|
|
# },
|
|
{
|
|
"name": "common",
|
|
"description": "Manage items. So _fancy_ they have their own docs.",
|
|
"externalDocs": {
|
|
"description": "Items external docs",
|
|
"url": "https://fastapi.tiangolo.com/",
|
|
},
|
|
},
|
|
]
|
|
|
|
|
|
def create_app():
|
|
application = FastAPI(dependencies=[Depends(get_token_header)],
|
|
openapi_tags=tags_metadata)
|
|
application.include_router(img_route.router, prefix="/img")
|
|
return application
|
|
|
|
|
|
app = create_app()
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=settings.origins,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
|
|
@app.on_event("startup")
|
|
async def startup_event():
|
|
app.state.redis = await get_redis_pool()
|
|
# Schedule.start()
|
|
# Schedule.add_listener(job_execute, EVENT_JOB_EXECUTED)
|
|
|
|
|
|
@app.on_event("shutdown")
|
|
async def shutdown_event():
|
|
app.state.redis.close()
|
|
await app.state.redis.wait_close()
|
|
|
|
|
|
@app.get("/")
|
|
async def root(request: Request):
|
|
redis_client = request.app.state.redis
|
|
keys = await redis_client.get("online_devices")
|
|
logger.info("get keys was {0} with {1}".format(keys, request.url))
|
|
if keys:
|
|
return {"message": "Hello Bigger Applications! {}".format(keys)}
|
|
else:
|
|
return {"message": "kajsk"}
|
|
|
|
|
|
# @app.post("/send-notification/{email}")
|
|
# async def send_notification(request: Request, email: str, background_tasks: BackgroundTasks, q: str = Depends(get_query)):
|
|
# redis_client = request.app.state.redis
|
|
# keys = await redis_client.get("online_devices")
|
|
# logger.info("get keys = {}".format(keys))
|
|
# message = f"message to {email} \n"
|
|
# background_tasks.add_task(write_log, message)
|
|
# return {"message": "Message sent"}
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import uvicorn
|
|
uvicorn.run(app='main:app', host="0.0.0.0",
|
|
port=8020, reload=True, debug=True)
|