fix cron
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Simple in-container scheduler using croniter + sleep.
|
||||
No cron daemon, no sudo, no root needed.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
try:
|
||||
from croniter import croniter
|
||||
except ImportError:
|
||||
print("❌ croniter not installed. Run: uv add croniter")
|
||||
sys.exit(1)
|
||||
|
||||
SCHEDULE = os.environ["CRON_SCHEDULE"]
|
||||
NOW = time.time()
|
||||
|
||||
cron = croniter(SCHEDULE, NOW)
|
||||
next_run = cron.get_next(float)
|
||||
|
||||
while True:
|
||||
now = time.time()
|
||||
if now >= next_run:
|
||||
print(f"\n▶ [{time.strftime('%Y-%m-%d %H:%M:%S')}] Starting if-curator...")
|
||||
result = subprocess.run(["uv", "run", "if-curator"])
|
||||
if result.returncode == 0:
|
||||
print(f"✅ Run complete.")
|
||||
else:
|
||||
print(f"⚠️ Run exited with code {result.returncode}")
|
||||
|
||||
next_run = cron.get_next(float)
|
||||
wait = next_run - time.time()
|
||||
if wait > 0:
|
||||
print(f"▶ Next run: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(next_run))} (in {int(wait // 3600)}h {int((wait % 3600) // 60)}m)")
|
||||
continue
|
||||
|
||||
wait = next_run - now
|
||||
print(f"▶ Next run: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(next_run))} (in {int(wait // 3600)}h {int((wait % 3600) // 60)}m)")
|
||||
time.sleep(min(wait, 3600)) # Check every hour at most, or sooner if needed
|
||||
|
||||
Reference in New Issue
Block a user