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
Build and Push Docker Images / build-and-push (push) Successful in 1m38s
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user