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 =============") 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): @app.get("/")
{ async def root():
"TELEMETRY": core_dynamic_crons.telemetry_cron, return {"status": "Running"}
"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"))()
if __name__ == '__main__': app.schedule = AsyncIOScheduler()
if len(sys.argv) < 2 or len(sys.argv[1]) < 1: app.schedule.start()
print("please provide actions as argument")
else: if not config("LOCAL_CRONS", default=False, cast=bool):
process(sys.argv[1]) 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 #!/bin/bash
bash env_vars.sh 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": "*"} {"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): if config("LOCAL_CRONS", default=False, cast=bool):
cron_jobs += [{"func": telemetry_cron, "trigger": "cron", "day_of_week": "*"}, cron_jobs += SINGLE_CRONS
{"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}]