neuer cron

This commit is contained in:
2026-01-27 21:05:16 -06:00
parent 90e294de82
commit 1d5e24f541
5 changed files with 80 additions and 6 deletions

View File

@@ -6,6 +6,13 @@ import boto3
import os
from pathlib import Path
import json
import time
from datetime import datetime
try:
from croniter import croniter
except ImportError:
print("Bitte 'croniter' via pip installieren!")
exit(1)
# Config
REGION = 'us-east-2'
@@ -102,4 +109,44 @@ def sync():
print(f'{email}')
if __name__ == '__main__':
sync()
# Pfad zur Cron-Definition (nur der String, z.B. "*/5 * * * *")
CRON_FILE = '/etc/sieve-schedule'
# Fallback, falls Datei fehlt
cron_string = "*/5 * * * *"
if os.path.exists(CRON_FILE):
with open(CRON_FILE, 'r') as f:
# Kommentare entfernen und String holen
content = f.read().strip()
if content and not content.startswith('#'):
cron_string = content
print(f"DynamoDB Sieve Sync gestartet. Zeitplan: {cron_string}")
print(f"AWS Region: {os.environ.get('AWS_DEFAULT_REGION', 'nicht gesetzt')}") # Debug Check
# Initialer Lauf beim Start? (Optional, hier auskommentiert)
sync()
# Iterator erstellen
base_time = datetime.now()
iter = croniter(cron_string, base_time)
while True:
# Den nächsten Zeitpunkt berechnen
next_run = iter.get_next(datetime)
now = datetime.now()
sleep_seconds = (next_run - now).total_seconds()
if sleep_seconds > 0:
# Warten bis zum nächsten Slot
time.sleep(sleep_seconds)
try:
print(f"[{datetime.now()}] Starte Sync...")
sync()
except Exception as e:
print(f"Fehler beim Sync: {e}")
# Wichtig: Bei Fehler nicht abstürzen, sondern weitermachen
pass