65 lines
2.0 KiB
Python
Executable File
65 lines
2.0 KiB
Python
Executable File
import pytz
|
|
from datetime import datetime, timedelta
|
|
from urllib.request import urlopen
|
|
import certifi
|
|
import json
|
|
import ujson
|
|
import schedule
|
|
import time
|
|
import subprocess
|
|
import asyncio
|
|
import aiohttp
|
|
import pytz
|
|
import sqlite3
|
|
import pandas as pd
|
|
import numpy as np
|
|
import threading # Import threading module for parallel execution
|
|
|
|
|
|
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():
|
|
# Run the asynchronous function inside an asyncio loop
|
|
subprocess.run(["python3", "cron_pocketbase.py"])
|
|
subprocess.run(["python3", "cron_notification_channel.py"])
|
|
|
|
def run_restart_cache():
|
|
#update db daily
|
|
week = datetime.today().weekday()
|
|
if week <= 5:
|
|
subprocess.run(["pm2", "restart","fastapi"])
|
|
subprocess.run(["pm2", "restart","fastify"])
|
|
subprocess.run(["pm2", "restart","websocket"])
|
|
|
|
|
|
def run_json_job():
|
|
# Run the asynchronous function inside an asyncio loop
|
|
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"])
|
|
|
|
# Create functions to run each schedule in a separate thread
|
|
def run_threaded(job_func):
|
|
job_thread = threading.Thread(target=job_func)
|
|
job_thread.start()
|
|
|
|
|
|
schedule.every().day.at("06:30").do(run_threaded, run_pocketbase).tag('pocketbase_job')
|
|
schedule.every().day.at("15:31").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')
|
|
|
|
while True:
|
|
schedule.run_pending()
|
|
time.sleep(3) |