diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 392f7aa84e..5940887e3d 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -885,3 +885,4 @@ if DEBUG or TESTING: # Plugin test settings PLUGIN_TESTING = get_setting('PLUGIN_TESTING', TESTING) # are plugins beeing tested? PLUGIN_TESTING_SETUP = get_setting('PLUGIN_TESTING_SETUP', False) # load plugins from setup hooks in testing? +PLUGIN_RETRY = get_setting('PLUGIN_RETRY', 5 if not TESTING else 1) # how often should plugin loading be tried? diff --git a/InvenTree/plugin/registry.py b/InvenTree/plugin/registry.py index 06298613a9..f0e5ce8055 100644 --- a/InvenTree/plugin/registry.py +++ b/InvenTree/plugin/registry.py @@ -65,6 +65,7 @@ class Plugins: registered_sucessfull = False blocked_plugin = None + retry_counter = settings.PLUGIN_RETRY while not registered_sucessfull: try: # we are using the db so for migrations etc we need to try this block @@ -84,6 +85,13 @@ class Plugins: self._clean_installed_apps() self._activate_plugins(force_reload=True) + # we do not want to end in an endless loop + retry_counter -=1 + if retry_counter <= 0: + if settings.PLUGIN_TESTING: + print('Max retries, breaking loading') + break + # now the loading will re-start up with init # remove maintenance