neuer cron
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user