fix: without redlock in code
This commit is contained in:
parent
4411f62fcf
commit
ac0ee58889
@ -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__":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user