diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2026-10-08 09:24:54 +0200 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2026-10-08 09:24:54 +0200 |
| commit | 78812339d9a0476a8c3b1dcbfe02f6f667957dc5 (patch) | |
| tree | efdf5b12a0103fc463bf969b1b31edbd7698468e /container/cron.py | |
| parent | c24034e001c589365883226e669351ce454fd255 (diff) | |
| download | fietsboek-78812339d9a0476a8c3b1dcbfe02f6f667957dc5.tar.gz fietsboek-78812339d9a0476a8c3b1dcbfe02f6f667957dc5.tar.bz2 fietsboek-78812339d9a0476a8c3b1dcbfe02f6f667957dc5.zip | |
run fietscron regularly inside container
Diffstat (limited to 'container/cron.py')
| -rw-r--r-- | container/cron.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/container/cron.py b/container/cron.py new file mode 100644 index 0000000..47aeaa9 --- /dev/null +++ b/container/cron.py @@ -0,0 +1,42 @@ +#!/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) |
