snapfeast.ai / main.py
Testys's picture
Making sure the server keeps running
654ff44 verified
import schedule
import time
import requests
import threading
import asyncio
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from users.routes import router as users_router
from auth.route import router as auth_router
from orders.routes import order_router, meal_router
app = FastAPI(
title="SnapFeast API",
description="SnapFeast API for managing users, meals, and orders.",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc",
openapi_url="/openapi.json",
)
# Configure CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allows all origins
allow_credentials=True,
allow_methods=["*"], # Allows all methods
allow_headers=["*"], # Allows all headers
)
# Include routers
app.include_router(users_router)
app.include_router(auth_router)
app.include_router(meal_router)
app.include_router(order_router)
@app.get("/", tags=["Home"])
def read_root():
return {"message": "Welcome to SnapFeast API!"}
@app.get("/health", tags=["Health"])
def health_check():
return {"status": "ok"}
def ping_server():
try:
print("Pinging server")
response = requests.get("https://testys-snapfeast-ai.hf.space")
except requests.exceptions.RequestException as e:
print("Server is down")
schedule.every(10).minutes.do(ping_server)
def run_schedule():
while True:
schedule.run_pending()
time.sleep(1)
thread = threading.Thread(target=run_schedule)
thread.daemon = True
thread.start()
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860, log_level="info")