77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
from mysql.connector import Error
|
|
from engine.db import get_connection
|
|
|
|
from engine.engine_components.active_courses import get_active_con_ids
|
|
from engine.engine_components.process_course import process_course
|
|
from engine.logger import log_info, log_debug, log_warn, log_error
|
|
|
|
def run_once():
|
|
try:
|
|
cnx = get_connection()
|
|
cur = cnx.cursor(dictionary=True)
|
|
|
|
con_ids = get_active_con_ids(cur)
|
|
if not con_ids:
|
|
log_info("[INFO] Aucune course active.")
|
|
return
|
|
|
|
# -------------------------------------------------
|
|
# Appliquer les PAUSE_REQUEST avant tout traitement
|
|
# -------------------------------------------------
|
|
active_courses = get_active_con_ids(cur)
|
|
|
|
for con_id in active_courses:
|
|
|
|
engine_table = f"resultv2_{con_id}_lecture"
|
|
|
|
# Lire le statut actuel
|
|
cur.execute(f"SELECT process_status FROM `{engine_table}` LIMIT 1")
|
|
row = cur.fetchone()
|
|
|
|
if not row:
|
|
continue
|
|
|
|
status = (row["process_status"] or "").upper()
|
|
|
|
# Si CI4 a demandé une pause → Python applique la pause maintenant
|
|
if status == "PAUSE_REQUEST":
|
|
cur.execute(f"UPDATE `{engine_table}` SET process_status = 'PAUSE'")
|
|
cnx.commit()
|
|
log_info(f"[PAUSE APPLIED] con_id={con_id}")
|
|
|
|
|
|
|
|
for con_id in con_ids:
|
|
process_course(cur, cnx, con_id)
|
|
|
|
except Error as e:
|
|
log_error(f"[ERREUR MYSQL] {e}")
|
|
|
|
finally:
|
|
try:
|
|
cur.close()
|
|
cnx.close()
|
|
except:
|
|
pass
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import time
|
|
import msvcrt # Spécifique Windows
|
|
|
|
log_info("[TEST MODE] Boucle continue — appuyer ENTER pour arrêter.")
|
|
|
|
try:
|
|
while True:
|
|
run_once()
|
|
time.sleep(0.5)
|
|
|
|
if msvcrt.kbhit(): # Une touche a été pressée
|
|
key = msvcrt.getch()
|
|
if key == b'\r': # ENTER = arrêt
|
|
log_info("[TEST MODE] Arrêt demandé via ENTER.")
|
|
break
|
|
|
|
except KeyboardInterrupt:
|
|
log_info("[TEST MODE] Arrêt via CTRL+C.")
|