From ac0ee58889fb86606fd37533868461e396840c83 Mon Sep 17 00:00:00 2001 From: administrateur Date: Sat, 29 Mar 2025 16:06:42 +0100 Subject: [PATCH] fix: without redlock in code --- script_creator.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/script_creator.py b/script_creator.py index 0f8b8f2..7c82b5e 100644 --- a/script_creator.py +++ b/script_creator.py @@ -3,7 +3,7 @@ import os import subprocess import base64 import requests -from redlock import Redlock +import redis from threading import Thread, Lock import time @@ -24,9 +24,9 @@ if not S3_ACCESS_KEY or not S3_SECRET_KEY: redis_host = os.getenv("REDIS_HOST", "redis.redis.svc.cluster.local") redis_port = int(os.getenv("REDIS_PORT", 6379)) -dlm = Redlock([{"host": redis_host, "port": redis_port, "db": 0}]) +redis_client = redis.Redis(host=redis_host, port=redis_port, decode_responses=True) -S3_UNMOUNT_CHECK_INTERVAL = int(os.getenv("S3_UNMOUNT_CHECK_INTERVAL", 300)) # 5 minutes par défaut +S3_UNMOUNT_CHECK_INTERVAL = int(os.getenv("S3_UNMOUNT_CHECK_INTERVAL", 300)) lock_prefix = "lock:mkdocs:" local_lock = Lock() @@ -74,8 +74,7 @@ def unmount_checker(): while True: time.sleep(S3_UNMOUNT_CHECK_INTERVAL) log_debug("⏰ Vérification périodique pour démontage S3...") - # Vérification si aucun build actif - active_locks = dlm.redis_clients[0].keys(f"{lock_prefix}*") + active_locks = redis_client.keys(f"{lock_prefix}*") if not active_locks: log_debug("🟢 Aucun build actif, démontage S3...") unmount_s3() @@ -92,8 +91,9 @@ def build_mkdocs(): return jsonify({"error": "WEBSITE manquant"}), 400 lock_key = f"{lock_prefix}{website}" - lock = dlm.lock(lock_key, 60000) - if not lock: + lock_acquired = redis_client.set(lock_key, "locked", nx=True, ex=60) + + if not lock_acquired: log_debug(f"⚠️ Build déjà actif: {website}") return jsonify({"status": "busy", "message": f"Build déjà actif: {website}"}), 429 @@ -122,7 +122,7 @@ def build_mkdocs(): return jsonify({"status": "success", "message": "Build réussi"}), 200 finally: - dlm.unlock(lock) + redis_client.delete(lock_key) log_debug(f"🔓 Verrou libéré: {website}") if __name__ == "__main__":