Source code for okx_polling_service_app

import asyncio

import dotenv
import uvicorn
from fastapi import FastAPI

from pyokx.rest_messages_service import okx_rest_messages_services
from redis_tools.utils import get_async_redis, stop_async_redis
from shared.logging import setup_logger

logger = setup_logger(__name__)

app = FastAPI(
    title="AntBot-OKX-REST-Service",
    description="",
    version="2.0.0",
)
rest_task = None
# websocket_instrument_task = None # need to have per instrument

dotenv.load_dotenv(dotenv.find_dotenv())

'''
----------------------------------------------------
                   APP Startup 
----------------------------------------------------
'''


[docs] @app.get("/health") def health_check(): # Todo add more health check metrics used around the codebase return {"status": "OK"}
[docs] @app.on_event("startup") async def startup_event(): logger.info("Startup event triggered") global rest_task global websocket_instrument_task async_redis = await get_async_redis() assert async_redis, "async_redis is None, check the connection to the Redis server" rest_task = asyncio.create_task(okx_rest_messages_services(slow_reload_interval=30))
[docs] @app.on_event("shutdown") async def shutdown_event(): logger.info("Shutdown event triggered") if rest_task: rest_task.cancel() try: await rest_task except asyncio.CancelledError: logger.error("REST task was cancelled") else: logger.warning("REST task was not running") await stop_async_redis()
''' ---------------------------------------------------- API ROUTERS ---------------------------------------------------- ''' if __name__ == "__main__": uvicorn.run(app="okx_polling_service_app:app", host="127.0.0.0", port=8080)