Exemplo n.º 1
0
 def schedule(self):
     # Lock
     with advisory_lock('task_manager_lock', wait=False) as acquired:
         with transaction.atomic():
             if acquired is False:
                 logger.debug("Not running scheduler, another task holds lock")
                 return
             logger.debug("Starting Scheduler")
             with task_manager_bulk_reschedule():
                 self._schedule()
Exemplo n.º 2
0
 def schedule(self):
     # Lock
     with advisory_lock('task_manager_lock', wait=False) as acquired:
         with transaction.atomic():
             if acquired is False:
                 logger.debug("Not running scheduler, another task holds lock")
                 return
             logger.debug("Starting Scheduler")
             with task_manager_bulk_reschedule():
                 # if sigterm due to timeout, still record metrics
                 signal.signal(signal.SIGTERM, self.record_aggregate_metrics_and_exit)
                 self._schedule()
                 self.record_aggregate_metrics()
             logger.debug("Finishing Scheduler")
Exemplo n.º 3
0
    def schedule(self):
        # Lock
        with advisory_lock('task_manager_lock', wait=False) as acquired:
            with transaction.atomic():
                if acquired is False:
                    logger.debug("Not running scheduler, another task holds lock")
                    return
                logger.debug("Starting Scheduler")

                with task_manager_bulk_reschedule():
                    finished_wfjs = self._schedule()

                # Operations whose queries rely on modifications made during the atomic scheduling session
                for wfj in WorkflowJob.objects.filter(id__in=finished_wfjs):
                    wfj.send_notification_templates('succeeded' if wfj.status == 'successful' else 'failed')