#!/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()