tw22
This commit is contained in:
@@ -0,0 +1,89 @@
|
|||||||
|
#!/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 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()
|
||||||
|
|||||||
Reference in New Issue
Block a user