diff options
Diffstat (limited to 'container')
| -rw-r--r-- | container/cron.py | 42 | ||||
| -rw-r--r-- | container/entrypoint | 3 |
2 files changed, 45 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) diff --git a/container/entrypoint b/container/entrypoint index c7f3b2d..dcfe1fa 100644 --- a/container/entrypoint +++ b/container/entrypoint @@ -59,4 +59,7 @@ fi # the first time (cd /package && fietsupdate update -fc "$CONFIG") +# Start a cronjob for fietscron in the background +/usr/bin/cron.py + exec "$@" |
