# 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)