Log impressions (JSONL) + sleep 3s entre copies multi
- _log_impression() ecrit chaque demande dans data/impressions.jsonl (timestamp, photo, copies, format, succes, event_id, detail CUPS) - Delai entre copies passe de 1s a 3s pour fiabiliser multi-copies Mitsubishi Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import base64
|
import base64
|
||||||
|
import datetime
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
@@ -1494,6 +1495,29 @@ async def api_reset_usb():
|
|||||||
return {"succes": False, "message": str(e)}
|
return {"succes": False, "message": str(e)}
|
||||||
|
|
||||||
|
|
||||||
|
FICHIER_LOG_IMPRESSIONS = RACINE / "data" / "impressions.jsonl"
|
||||||
|
|
||||||
|
|
||||||
|
def _log_impression(photo: str, copies: int, format_papier: str | None, succes: bool, detail: str):
|
||||||
|
entry = {
|
||||||
|
"ts": datetime.datetime.now().isoformat(),
|
||||||
|
"photo": photo,
|
||||||
|
"copies": copies,
|
||||||
|
"format": format_papier,
|
||||||
|
"succes": succes,
|
||||||
|
"detail": detail,
|
||||||
|
}
|
||||||
|
config = charger_config()
|
||||||
|
evt = config.get("evenement", {}).get("event_id", "")
|
||||||
|
if evt:
|
||||||
|
entry["event"] = evt
|
||||||
|
try:
|
||||||
|
with open(FICHIER_LOG_IMPRESSIONS, "a") as f:
|
||||||
|
f.write(json.dumps(entry) + "\n")
|
||||||
|
except Exception as e:
|
||||||
|
log.warning(f"Impossible d'ecrire le log impression : {e}")
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/imprimer")
|
@app.post("/api/imprimer")
|
||||||
async def api_imprimer(donnees: dict):
|
async def api_imprimer(donnees: dict):
|
||||||
if evenement_est_termine():
|
if evenement_est_termine():
|
||||||
@@ -1511,12 +1535,16 @@ async def api_imprimer(donnees: dict):
|
|||||||
return JSONResponse({"erreur": "Photo introuvable"}, status_code=404)
|
return JSONResponse({"erreur": "Photo introuvable"}, status_code=404)
|
||||||
cadre_override = donnees.get("cadre")
|
cadre_override = donnees.get("cadre")
|
||||||
format_papier = donnees.get("format_papier") or None
|
format_papier = donnees.get("format_papier") or None
|
||||||
|
log.info(f"IMPRESSION demandee: photo={nom} copies={copies} format={format_papier} cadre={cadre_override}")
|
||||||
try:
|
try:
|
||||||
resultat = imprimer(chemin, copies=copies, cadre_override=cadre_override, format_papier=format_papier)
|
resultat = imprimer(chemin, copies=copies, cadre_override=cadre_override, format_papier=format_papier)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error(f"Erreur impression inattendue : {e}")
|
log.error(f"Erreur impression inattendue : {e}")
|
||||||
|
_log_impression(nom, copies, format_papier, False, str(e))
|
||||||
return {"succes": False, "erreur": "erreur_impression", "message": f"Erreur interne : {e}"}
|
return {"succes": False, "erreur": "erreur_impression", "message": f"Erreur interne : {e}"}
|
||||||
if resultat.get("succes"):
|
succes = resultat.get("succes", False)
|
||||||
|
_log_impression(nom, copies, format_papier, succes, resultat.get("job", ""))
|
||||||
|
if succes:
|
||||||
distribuer_photo(chemin, imprimee=True, copies=copies, format_papier=format_papier)
|
distribuer_photo(chemin, imprimee=True, copies=copies, format_papier=format_papier)
|
||||||
return resultat
|
return resultat
|
||||||
|
|
||||||
|
|||||||
@@ -353,7 +353,7 @@ def imprimer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if copie < copies:
|
if copie < copies:
|
||||||
time.sleep(1)
|
time.sleep(3)
|
||||||
|
|
||||||
log.info(f"Impression terminée : {copies} copie(s), jobs={jobs}")
|
log.info(f"Impression terminée : {copies} copie(s), jobs={jobs}")
|
||||||
return {"succes": True, "job": ", ".join(jobs)}
|
return {"succes": True, "job": ", ".join(jobs)}
|
||||||
|
|||||||
Reference in New Issue
Block a user