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()
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")
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')