#!/usr/bin/env python import os import sys import datetime import subprocess import time SLEEPY_TIME = datetime.timedelta(hours=1) SLEEPY_BATCH = datetime.timedelta(minutes=10) LOGFILE = "/fietsboek/fietscron.log" pid = os.fork() if pid > 0: sys.exit(0) os.setsid() pid = os.fork() if pid > 0: sys.exit(0) def run_fietscron(): with open(LOGFILE, "wb") as stdout: subprocess.run( ["/usr/local/bin/fietscron", "-c", "/fietsboek/fietsboek.ini"], stdout=stdout, stderr=subprocess.STDOUT, ) def wait(start): wanted_time = start + SLEEPY_TIME while (now := datetime.datetime.now(tz=datetime.UTC)) < wanted_time: to_sleep = min(wanted_time - now, SLEEPY_BATCH) time.sleep(to_sleep.total_seconds()) while True: start = datetime.datetime.now(tz=datetime.UTC) run_fietscron() wait(start)