feat(crons): run 24/7

feat(alerts): support env-file override
This commit is contained in:
Taha Yassine Kraiem 2022-07-04 14:26:33 +02:00
parent 8e1ad7ec3d
commit 45701a6ecc
4 changed files with 34 additions and 18 deletions

View file

@ -1,19 +1,30 @@
print("============= CRONS =============")
import sys
from routers.crons import core_dynamic_crons
import logging
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from decouple import config
from fastapi import FastAPI
from routers.crons import core_crons, core_dynamic_crons
app = FastAPI()
def process(action):
{
"TELEMETRY": core_dynamic_crons.telemetry_cron,
"JOB": core_dynamic_crons.run_scheduled_jobs,
"REPORT": core_dynamic_crons.weekly_report2
}.get(action.upper(), lambda: print(f"{action} not found in crons-definitions"))()
@app.get("/")
async def root():
return {"status": "Running"}
if __name__ == '__main__':
if len(sys.argv) < 2 or len(sys.argv[1]) < 1:
print("please provide actions as argument")
else:
process(sys.argv[1])
app.schedule = AsyncIOScheduler()
app.schedule.start()
if not config("LOCAL_CRONS", default=False, cast=bool):
for job in core_crons.cron_jobs + core_dynamic_crons.cron_jobs + core_dynamic_crons.SINGLE_CRONS:
app.schedule.add_job(id=job["func"].__name__, **job)
logging.basicConfig(level=config("LOGLEVEL", default=logging.INFO))
logging.getLogger('apscheduler').setLevel(config("LOGLEVEL", default=logging.INFO))
else:
print("Nothing to do because LOCAL_CRONS mode is enabled.")

3
ee/api/entrypoint_alerts.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
bash env_vars.sh
uvicorn app:app --host 0.0.0.0 --reload

View file

@ -1,3 +1,3 @@
#!/bin/bash
bash env_vars.sh
python app_crons.py $ACTION
uvicorn app:app --host 0.0.0.0 --reload --proxy-headers

View file

@ -26,8 +26,10 @@ cron_jobs = [
{"func": unlock_cron, "trigger": "cron", "hour": "*"}
]
SINGLE_CRONS = [{"func": telemetry_cron, "trigger": "cron", "day_of_week": "*"},
{"func": run_scheduled_jobs, "trigger": "interval", "seconds": 60, "misfire_grace_time": 20},
{"func": weekly_report2, "trigger": "cron", "day_of_week": "mon", "hour": 5,
"misfire_grace_time": 60 * 60}]
if config("LOCAL_CRONS", default=False, cast=bool):
cron_jobs += [{"func": telemetry_cron, "trigger": "cron", "day_of_week": "*"},
{"func": run_scheduled_jobs, "trigger": "interval", "seconds": 60, "misfire_grace_time": 20},
{"func": weekly_report2, "trigger": "cron", "day_of_week": "mon", "hour": 5,
"misfire_grace_time": 60 * 60}]
cron_jobs += SINGLE_CRONS