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