mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +00:00 
			
		
		
		
	try/catch for operational error
- Database might not yet be ready to load models
This commit is contained in:
		| @@ -135,41 +135,49 @@ class ScheduleMixin: | ||||
|         Register the tasks with the database | ||||
|         """ | ||||
|  | ||||
|         from django_q.models import Schedule | ||||
|         try: | ||||
|             from django_q.models import Schedule | ||||
|  | ||||
|         for key, task in self.scheduled_tasks.items(): | ||||
|             for key, task in self.scheduled_tasks.items(): | ||||
|  | ||||
|             task_name = self.get_task_name(key) | ||||
|                 task_name = self.get_task_name(key) | ||||
|  | ||||
|             # If a matching scheduled task does not exist, create it! | ||||
|             if not Schedule.objects.filter(name=task_name).exists(): | ||||
|                 # If a matching scheduled task does not exist, create it! | ||||
|                 if not Schedule.objects.filter(name=task_name).exists(): | ||||
|  | ||||
|                 logger.info(f"Adding scheduled task '{task_name}'") | ||||
|                     logger.info(f"Adding scheduled task '{task_name}'") | ||||
|  | ||||
|                 Schedule.objects.create( | ||||
|                     name=task_name, | ||||
|                     func=task['func'], | ||||
|                     schedule_type=task['schedule'], | ||||
|                     minutes=task.get('minutes', None), | ||||
|                     repeats=task.get('repeats', -1), | ||||
|                 ) | ||||
|                     Schedule.objects.create( | ||||
|                         name=task_name, | ||||
|                         func=task['func'], | ||||
|                         schedule_type=task['schedule'], | ||||
|                         minutes=task.get('minutes', None), | ||||
|                         repeats=task.get('repeats', -1), | ||||
|                     ) | ||||
|         except OperationalError: | ||||
|             # Database might not yet be ready | ||||
|             pass | ||||
|  | ||||
|     def unregister_tasks(self): | ||||
|         """ | ||||
|         Deregister the tasks with the database | ||||
|         """ | ||||
|  | ||||
|         from django_q.models import Schedule | ||||
|         try: | ||||
|             from django_q.models import Schedule | ||||
|  | ||||
|         for key, task in self.scheduled_tasks.items(): | ||||
|             for key, task in self.scheduled_tasks.items(): | ||||
|  | ||||
|             task_name = self.get_task_name(key) | ||||
|                 task_name = self.get_task_name(key) | ||||
|  | ||||
|             try: | ||||
|                 scheduled_task = Schedule.objects.get(name=task_name) | ||||
|                 scheduled_task.delete() | ||||
|             except Schedule.DoesNotExist: | ||||
|                 pass | ||||
|                 try: | ||||
|                     scheduled_task = Schedule.objects.get(name=task_name) | ||||
|                     scheduled_task.delete() | ||||
|                 except Schedule.DoesNotExist: | ||||
|                     pass | ||||
|         except OperationalError: | ||||
|             # Database might not yet be ready | ||||
|             pass | ||||
|  | ||||
|  | ||||
| class UrlsMixin: | ||||
|   | ||||
| @@ -301,7 +301,6 @@ class PluginsRegistry: | ||||
|         logger.info('Activating plugin tasks') | ||||
|  | ||||
|         from common.models import InvenTreeSetting | ||||
|         from django_q.models import Schedule | ||||
|  | ||||
|         # List of tasks we have activated | ||||
|         task_keys = [] | ||||
| @@ -323,17 +322,23 @@ class PluginsRegistry: | ||||
|  | ||||
|         # Remove any scheduled tasks which do not match | ||||
|         # This stops 'old' plugin tasks from accumulating | ||||
|         scheduled_plugin_tasks = Schedule.objects.filter(name__istartswith="plugin.") | ||||
|         try: | ||||
|             from django_q.models import Schedule | ||||
|  | ||||
|         deleted_count = 0 | ||||
|             scheduled_plugin_tasks = Schedule.objects.filter(name__istartswith="plugin.") | ||||
|  | ||||
|         for task in scheduled_plugin_tasks: | ||||
|             if task.name not in task_keys: | ||||
|                 task.delete() | ||||
|                 deleted_count += 1 | ||||
|             deleted_count = 0 | ||||
|  | ||||
|         if deleted_count > 0: | ||||
|             logger.info(f"Removed {deleted_count} old scheduled tasks") | ||||
|             for task in scheduled_plugin_tasks: | ||||
|                 if task.name not in task_keys: | ||||
|                     task.delete() | ||||
|                     deleted_count += 1 | ||||
|  | ||||
|             if deleted_count > 0: | ||||
|                 logger.info(f"Removed {deleted_count} old scheduled tasks") | ||||
|         except OperationalError: | ||||
|             # Database might not yet be ready | ||||
|             pass | ||||
|  | ||||
|     def deactivate_integration_schedule(self): | ||||
|         pass | ||||
|   | ||||
		Reference in New Issue
	
	Block a user