From 110327b73ef1ff6a18e66f51ec1c945a1415500e Mon Sep 17 00:00:00 2001 From: AIIrondev Date: Sat, 18 Apr 2026 14:02:28 +0200 Subject: [PATCH] feat: Enhance scheduler initialization to clean up stale lock files for multi-worker deployments --- Web/__pycache__/app.cpython-312.pyc | Bin 474982 -> 478208 bytes Web/__pycache__/items.cpython-312.pyc | Bin 37923 -> 37923 bytes Web/app.py | 12 ++++++++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Web/__pycache__/app.cpython-312.pyc b/Web/__pycache__/app.cpython-312.pyc index 6539a4a783c5d0a198439fb1e6ed34625f7b425c..a99dbe95db4fd3afc9aca717f9f7c6508c54a1e1 100644 GIT binary patch delta 28148 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 delta 26102 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 diff --git a/Web/__pycache__/items.cpython-312.pyc b/Web/__pycache__/items.cpython-312.pyc index e3a8d57c2d0a657f1b916f2614a1ea1854a17e1d..0dacb168e675e58bbfa6a008e39918fd4717615f 100644 GIT binary patch delta 21 bcmZ3yf@$#zCa%-Gyj%=Gkdd*GOL7VTM*9WK delta 21 bcmZ3yf@$#zCa%-Gyj%=Gpp(9lOL7VTMUDlJ diff --git a/Web/app.py b/Web/app.py index 746b3de..ba7258a 100755 --- a/Web/app.py +++ b/Web/app.py @@ -1259,9 +1259,17 @@ def _initialize_scheduler(): return try: - # For multi-worker Gunicorn, check if we're in a reasonable scenario - # Using a lock file to ensure only one instance starts the scheduler + # For multi-worker Gunicorn, use a lock file to ensure only one instance starts the scheduler + # Clean up any stale lock file from previous runs (older than 5 minutes) scheduler_lock_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), '.scheduler_lock') + try: + if os.path.exists(scheduler_lock_path): + lock_age = time.time() - os.path.getmtime(scheduler_lock_path) + if lock_age > 300: # 5 minutes - indicates a stale lock from a previous container run + os.remove(scheduler_lock_path) + app.logger.info(f"Removed stale scheduler lock file (age: {lock_age:.0f}s)") + except Exception: + pass # If we can't clean up, continue anyway try: # Try to create the lock file - only succeeds if it doesn't exist