aboutsummaryrefslogtreecommitdiff
path: root/jb/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'jb/main.py')
-rw-r--r--jb/main.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/jb/main.py b/jb/main.py
new file mode 100644
index 0000000..8c1dbed
--- /dev/null
+++ b/jb/main.py
@@ -0,0 +1,59 @@
+from multiprocessing import Process
+
+from fastapi import FastAPI, Request
+from fastapi.responses import HTMLResponse
+from starlette.middleware.cors import CORSMiddleware
+from starlette.middleware.trustedhost import TrustedHostMiddleware
+
+from jb.views.common import common_router
+from jb.settings import BASE_HTML
+from jb.config import settings
+
+app = FastAPI(
+ servers=[
+ {
+ "url": "https://jamesbillings67.com/",
+ "description": "Production environment",
+ },
+ ],
+ title="jb",
+ version="1.0.0",
+)
+
+app.add_middleware(
+ CORSMiddleware,
+ allow_origins=["*"],
+ allow_credentials=True,
+ allow_methods=["*"],
+ allow_headers=["*"],
+)
+
+app.add_middleware(TrustedHostMiddleware, allowed_hosts=["*"])
+app.include_router(router=common_router)
+
+
+@app.get("/robots.txt")
+@app.get("/sitemap.xml")
+@app.get("/favicon.ico")
+def return_nothing():
+ return {}
+
+
+@app.get("/{full_path:path}")
+def serve_react_app(full_path: str):
+ # This serves index.html for any unmatched route
+ # React Router will then handle the client-side routing
+ return HTMLResponse(BASE_HTML)
+
+
+def schedule_tasks():
+ from jb.flow.events import process_mturk_events_task, handle_pending_msgs_task
+ from jb.flow.tasks import refill_hits_task
+
+ Process(target=process_mturk_events_task).start()
+ # Process(target=handle_pending_msgs_task).start()
+ Process(target=refill_hits_task).start()
+
+
+if not settings.debug:
+ schedule_tasks()