aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2026-10-08 09:24:54 +0200
committerDaniel Schadt <kingdread@gmx.de>2026-10-08 09:24:54 +0200
commit78812339d9a0476a8c3b1dcbfe02f6f667957dc5 (patch)
treeefdf5b12a0103fc463bf969b1b31edbd7698468e
parentc24034e001c589365883226e669351ce454fd255 (diff)
downloadfietsboek-78812339d9a0476a8c3b1dcbfe02f6f667957dc5.tar.gz
fietsboek-78812339d9a0476a8c3b1dcbfe02f6f667957dc5.tar.bz2
fietsboek-78812339d9a0476a8c3b1dcbfe02f6f667957dc5.zip
run fietscron regularly inside container
-rw-r--r--Dockerfile1
-rw-r--r--container/cron.py42
-rw-r--r--container/entrypoint3
3 files changed, 46 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile
index f485f2e..8a88bb6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,6 +8,7 @@ COPY ["pyproject.toml", "README.md", "LICENSE.txt", "CHANGELOG.rst", "production
RUN pip install .
COPY --chmod=755 ["container/entrypoint", "/bin/entrypoint"]
+COPY --chmod=755 ["container/cron.py", "/usr/bin/cron.py"]
COPY ["container/gunicorn.conf.py", "/fietsboek/gunicorn.conf.py"]
VOLUME /fietsboek/data /fietsboek/database /fietsboek/pages
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 "$@"