@@ -80,16 +80,28 @@ def _initialize_enforcer() -> FastEnforcer:
8080 FastEnforcer: Configured Casbin enforcer with adapter and watcher
8181 """
8282 db_alias = getattr (settings , "CASBIN_DB_ALIAS" , "default" )
83- initialize_enforcer (db_alias )
83+
84+ try :
85+ # Initialize the enforcer with the specified database alias to set up the adapter.
86+ # Best to lazy load it when it's first used to ensure the database is ready and avoid
87+ # issues when the app is not fully loaded (e.g., while pulling translations, etc.).
88+ initialize_enforcer (db_alias )
89+ except Exception as e : # pylint: disable=broad-exception-caught
90+ logger .error (f"Failed to initialize Casbin enforcer with DB alias '{ db_alias } ': { e } " )
91+ raise
92+
8493 adapter = ExtendedAdapter ()
8594 enforcer = FastEnforcer (settings .CASBIN_MODEL , adapter , enable_log = True )
8695 enforcer .enable_auto_save (True )
8796
88- if Watcher :
89- try :
90- enforcer .set_watcher (Watcher )
91- logger .info ("Watcher successfully set on Casbin enforcer" )
92- except Exception as e : # pylint: disable=broad-exception-caught
93- logger .error (f"Failed to set watcher on Casbin enforcer: { e } " )
97+ if not Watcher :
98+ logger .warning ("Redis configuration not completed successfully. Watcher is disabled." )
99+ return enforcer
100+
101+ try :
102+ enforcer .set_watcher (Watcher )
103+ logger .info ("Watcher successfully set on Casbin enforcer" )
104+ except Exception as e : # pylint: disable=broad-exception-caught
105+ logger .error (f"Failed to set watcher on Casbin enforcer: { e } " )
94106
95107 return enforcer
0 commit comments