fix: without redlock in code

This commit is contained in:
administrateur 2025-03-29 16:06:42 +01:00
parent 4411f62fcf
commit ac0ee58889

View File

@ -3,7 +3,7 @@ import os
import subprocess import subprocess
import base64 import base64
import requests import requests
from redlock import Redlock import redis
from threading import Thread, Lock from threading import Thread, Lock
import time 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_host = os.getenv("REDIS_HOST", "redis.redis.svc.cluster.local")
redis_port = int(os.getenv("REDIS_PORT", 6379)) 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:" lock_prefix = "lock:mkdocs:"
local_lock = Lock() local_lock = Lock()
@ -74,8 +74,7 @@ def unmount_checker():
while True: while True:
time.sleep(S3_UNMOUNT_CHECK_INTERVAL) time.sleep(S3_UNMOUNT_CHECK_INTERVAL)
log_debug("⏰ Vérification périodique pour démontage S3...") log_debug("⏰ Vérification périodique pour démontage S3...")
# Vérification si aucun build actif active_locks = redis_client.keys(f"{lock_prefix}*")
active_locks = dlm.redis_clients[0].keys(f"{lock_prefix}*")
if not active_locks: if not active_locks:
log_debug("🟢 Aucun build actif, démontage S3...") log_debug("🟢 Aucun build actif, démontage S3...")
unmount_s3() unmount_s3()
@ -92,8 +91,9 @@ def build_mkdocs():
return jsonify({"error": "WEBSITE manquant"}), 400 return jsonify({"error": "WEBSITE manquant"}), 400
lock_key = f"{lock_prefix}{website}" lock_key = f"{lock_prefix}{website}"
lock = dlm.lock(lock_key, 60000) lock_acquired = redis_client.set(lock_key, "locked", nx=True, ex=60)
if not lock:
if not lock_acquired:
log_debug(f"⚠️ Build déjà actif: {website}") log_debug(f"⚠️ Build déjà actif: {website}")
return jsonify({"status": "busy", "message": f"Build déjà actif: {website}"}), 429 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 return jsonify({"status": "success", "message": "Build réussi"}), 200
finally: finally:
dlm.unlock(lock) redis_client.delete(lock_key)
log_debug(f"🔓 Verrou libéré: {website}") log_debug(f"🔓 Verrou libéré: {website}")
if __name__ == "__main__": if __name__ == "__main__":