Files
medevio/10ReadPozadavky/PRAVIDELNE_PLNYSCRIPT.py
2025-12-02 07:31:16 +01:00

109 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import importlib.util
import sys
from pathlib import Path
# Load FunctionsLoader
FUNCTIONS_LOADER_PATH = Path(r"C:\Reporting\Functions\FunctionsLoader.py")
spec = importlib.util.spec_from_file_location("FunctionsLoader", FUNCTIONS_LOADER_PATH)
FunctionsLoader = importlib.util.module_from_spec(spec)
sys.modules["FunctionsLoader"] = FunctionsLoader
spec.loader.exec_module(FunctionsLoader)
"""
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(("192.168.1.76", 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()