diff --git a/api/src/backend/api/apps.py b/api/src/backend/api/apps.py index c93ecdcafc..cded272e13 100644 --- a/api/src/backend/api/apps.py +++ b/api/src/backend/api/apps.py @@ -35,10 +35,12 @@ class ApiConfig(AppConfig): from api.compliance import load_prowler_compliance # Generate required cryptographic keys if not present, but only if: - # `"manage.py" not in sys.argv`: If an external server (e.g., Gunicorn) is running the app + # `"manage.py" not in sys.argv[0]`: If an external server (e.g., Gunicorn) is running the app # `os.environ.get("RUN_MAIN")`: If it's not a Django command or using `runserver`, # only the main process will do it - if "manage.py" not in sys.argv or os.environ.get("RUN_MAIN"): + if (len(sys.argv) >= 1 and "manage.py" not in sys.argv[0]) or os.environ.get( + "RUN_MAIN" + ): self._ensure_crypto_keys() # Commands that don't need Neo4j @@ -51,9 +53,10 @@ class ApiConfig(AppConfig): "check_and_fix_socialaccount_sites_migration", ] + # Skip Neo4j initialization during tests or specific Django commands if getattr(settings, "TESTING", False) or ( - "manage.py" in sys.argv - and len(sys.argv) > 1 + len(sys.argv) > 1 + and "manage.py" in sys.argv[0] and sys.argv[1] in SKIP_NEO4J_DJANGO_COMMANDS ): logger.info(