Refactor EPG scheduling: replace CRON_SCHEDULE with GRAB_INTERVAL_HOURS for improved interval-based grabbing and add lock mechanism to prevent concurrent executions.
Build and Push Docker Images / build-and-push (push) Successful in 1m38s

This commit is contained in:
2026-05-24 13:48:27 +02:00
parent 6b63abc2af
commit b9f292280b
2 changed files with 17 additions and 19 deletions
+15 -17
View File
@@ -56,6 +56,11 @@ grab_epg() {
}
if [ "$1" = "grab" ]; then
if ! mkdir /tmp/epg-grab.lock 2>/dev/null; then
echo "EPG grab already running, skipping"
exit 0
fi
trap 'rmdir /tmp/epg-grab.lock 2>/dev/null || true' EXIT INT TERM
grab_epg
exit 0
fi
@@ -67,24 +72,17 @@ if [ -n "$SITES" ]; then
grab_epg
fi
if [ -n "$CRON_SCHEDULE" ] && [ -n "$SITES" ]; then
echo "Setting up cron job with schedule: $CRON_SCHEDULE"
# Cron runs with a minimal env — bake grab-related vars into a wrapper script.
{
echo '#!/bin/sh'
echo 'cd /app'
for var in SITES OUTPUT MAX_CONNECTIONS DAYS TIMEOUT DELAY LANG PROXY GZIP JSON CURL; do
eval "val=\$$var"
if [ -n "$val" ]; then
printf "export %s='%s'\n" "$var" "$(printf '%s' "$val" | sed "s/'/'\\\\''/g")"
fi
if [ -n "$SITES" ] && [ "${GRAB_INTERVAL_HOURS:-0}" -gt 0 ] 2>/dev/null; then
echo "Scheduling EPG grab every ${GRAB_INTERVAL_HOURS} hours"
(
while true; do
sleep $((GRAB_INTERVAL_HOURS * 3600))
echo "Starting scheduled EPG grab at $(date -u '+%Y-%m-%d %H:%M:%S UTC' 2>/dev/null || date)"
/app/entrypoint.sh grab
done
echo 'exec /app/entrypoint.sh grab'
} >/app/run-grab.sh
chmod +x /app/run-grab.sh
echo "$CRON_SCHEDULE /app/run-grab.sh >> /proc/1/fd/1 2>&1" >/etc/crontabs/root
chmod 600 /etc/crontabs/root
crond -b -l 2
) &
elif [ -n "$CRON_SCHEDULE" ]; then
echo "WARNING: CRON_SCHEDULE is deprecated, use GRAB_INTERVAL_HOURS instead (ignored)"
fi
echo "Starting server on port 3000 to serve EPG files from /app/guides"