98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
Spustí všechny PRAVIDELNÉ skripty v daném pořadí:
|
||
|
||
0) PRAVIDELNE_0_READ_ALL_ACTIVE_POZADAVKY.py
|
||
1) PRAVIDELNE_1_ReadLast300DonePozadavku.py
|
||
2) PRAVIDELNE_2_ReadPoznamky.py
|
||
3) PRAVIDELNE_3_StahniKomunikaci.py
|
||
4) PRAVIDELNE_4_StahniPrilohyUlozDoMySQL.py
|
||
5) PRAVIDELNE_5_SaveToFileSystem incremental.py
|
||
"""
|
||
|
||
import time, socket
|
||
for _ in range(30):
|
||
try:
|
||
socket.create_connection(("127.0.0.1", 3307), timeout=3).close()
|
||
break
|
||
except OSError:
|
||
time.sleep(10)
|
||
|
||
import sys
|
||
import subprocess
|
||
from pathlib import Path
|
||
from datetime import datetime
|
||
|
||
# složka, kde leží tento skript i všechny PRAVIDELNE_*.py
|
||
BASE_DIR = Path(__file__).resolve().parent
|
||
|
||
SCRIPTS_IN_ORDER = [
|
||
"PRAVIDELNE_0_READ_ALL_ACTIVE_POZADAVKY.py",
|
||
"PRAVIDELNE_1_ReadLast300DonePozadavku.py",
|
||
"PRAVIDELNE_2_ReadPoznamky.py",
|
||
"PRAVIDELNE_3_StahniKomunikaci.py",
|
||
"PRAVIDELNE_4_StahniPrilohyUlozDoMySQL.py",
|
||
"PRAVIDELNE_5_SaveToFileSystem incremental.py", # má mezeru v názvu, ale v listu je to OK
|
||
]
|
||
|
||
LOG_FILE = BASE_DIR / "PRAVIDELNE_log.txt"
|
||
|
||
|
||
def log(msg: str):
|
||
"""Zapíše zprávu do log souboru i na konzoli."""
|
||
ts = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||
line = f"[{ts}] {msg}"
|
||
print(line)
|
||
try:
|
||
with LOG_FILE.open("a", encoding="utf-8") as f:
|
||
f.write(line + "\n")
|
||
except Exception:
|
||
# log nesmí shodit běh
|
||
pass
|
||
|
||
|
||
def main():
|
||
log("=== START pravidelného běhu ===")
|
||
|
||
for script_name in SCRIPTS_IN_ORDER:
|
||
script_path = BASE_DIR / script_name
|
||
|
||
if not script_path.exists():
|
||
log(f"❌ Skript nenalezen: {script_path}")
|
||
continue
|
||
|
||
log(f"▶ Spouštím: {script_path.name}")
|
||
|
||
# spustíme stejným interpretem, kterým běží tento orchestr
|
||
try:
|
||
result = subprocess.run(
|
||
[sys.executable, str(script_path)],
|
||
cwd=str(BASE_DIR),
|
||
capture_output=True,
|
||
text=True,
|
||
encoding="utf-8",
|
||
errors="ignore", # NEZKAZÍ SE, NEZBOŘÍ SE, PROSTĚ IGNORUJE CP1252 NEZÁKONNÉ BYTES
|
||
)
|
||
except Exception as e:
|
||
log(f" 💥 Chyba při spouštění {script_path.name}: {e}")
|
||
continue
|
||
|
||
# vypíšeme návratový kód
|
||
log(f" ↳ return code: {result.returncode}")
|
||
|
||
# pokud něco skript vypsal na stderr, logneme
|
||
if result.stderr:
|
||
log(f" ⚠ stderr {script_path.name}:\n{result.stderr.strip()}")
|
||
|
||
# stdout můžeš podle chuti také logovat (někdy je toho moc):
|
||
# if result.stdout:
|
||
# log(f" ℹ stdout {script_path.name}:\n{result.stdout.strip()}")
|
||
|
||
log("=== KONEC pravidelného běhu ===\n")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|