backend/app/secondary_cron_job.py
2025-04-13 15:12:46 +02:00

60 lines
1.9 KiB
Python
Executable File

import schedule
import time
import subprocess
import threading
from datetime import datetime
import pytz
berlin_tz = pytz.timezone('Europe/Berlin')
# Set the system's timezone to Berlin at the beginning
subprocess.run(["timedatectl", "set-timezone", "Europe/Berlin"])
def run_pocketbase():
subprocess.run(["python3", "cron_pocketbase.py"])
subprocess.run(["python3", "cron_notification_channel.py"])
def run_restart_cache():
subprocess.run(["pm2", "restart", "fastapi"])
subprocess.run(["pm2", "restart", "fastify"])
subprocess.run(["pm2", "restart", "websocket"])
def run_json_job():
subprocess.run(["python3", "restart_json.py"])
subprocess.run(["pm2", "restart", "fastapi"])
subprocess.run(["pm2", "restart", "fastify"])
subprocess.run(["pm2", "restart", "websocket"])
def run_cron_price_alert():
week = datetime.today().weekday()
if week <= 4:
subprocess.run(["python3", "cron_price_alert.py"])
def run_refresh_pocketbase():
"""Runs cron_pocketbase.py with --refresh at the start of each month."""
now = datetime.now(berlin_tz)
if now.day == 1:
subprocess.run(["python3", "cron_pocketbase.py", "--refresh"])
# Run each job in a separate thread
def run_threaded(job_func):
job_thread = threading.Thread(target=job_func)
job_thread.start()
# Existing scheduled tasks
schedule.every().day.at("06:30").do(run_threaded, run_pocketbase).tag('pocketbase_job')
schedule.every().day.at("15:30").do(run_threaded, run_restart_cache)
schedule.every().day.at("23:00").do(run_threaded, run_restart_cache)
schedule.every(2).hours.do(run_threaded, run_json_job).tag('json_job')
schedule.every(1).minutes.do(run_threaded, run_cron_price_alert).tag('price_alert_job')
schedule.every().day.at("00:30").do(run_threaded, run_refresh_pocketbase)
# Keep the scheduler running
while True:
schedule.run_pending()
time.sleep(3)