def create_tasks(self): for cls in (AlertScheduleInstance, TimedScheduleInstance): for domain, schedule_instance_id, next_event_due in get_active_schedule_instance_ids( cls, datetime.utcnow()): if skip_domain(domain): continue # We use a non-blocking lock here with a timeout of one hour to make sure # that we only retry non-processed schedule instances once an hour. enqueue_lock = self.get_enqueue_lock(cls, schedule_instance_id, next_event_due) if enqueue_lock.acquire(blocking=False): self.get_task(cls).delay(schedule_instance_id) for cls in (CaseAlertScheduleInstance, CaseTimedScheduleInstance): for domain, case_id, schedule_instance_id, next_event_due in get_active_case_schedule_instance_ids( cls, datetime.utcnow()): if skip_domain(domain): continue # See comment above about why we use a non-blocking lock here. enqueue_lock = self.get_enqueue_lock(cls, schedule_instance_id, next_event_due) if enqueue_lock.acquire(blocking=False): self.get_task(cls).delay(case_id, schedule_instance_id)
def test_get_active_alert_schedule_instance_ids(self): self.assertItemsEqual( get_active_schedule_instance_ids( AlertScheduleInstance, datetime(2017, 4, 1), due_after=datetime(2017, 2, 1), ), [(self.domain, self.alert_instance1.schedule_instance_id, self.alert_instance1.next_event_due), (self.domain, self.alert_instance2.schedule_instance_id, self.alert_instance2.next_event_due)]) self.assertItemsEqual( get_active_schedule_instance_ids( AlertScheduleInstance, datetime(2016, 4, 1), due_after=datetime(2016, 2, 1), ), [])
def test_get_active_timed_schedule_instance_ids(self): self.assertItemsEqual( get_active_schedule_instance_ids( TimedScheduleInstance, datetime(2017, 4, 1), due_after=datetime(2017, 2, 1), ), [ (self.domain, self.timed_instance1_p2.schedule_instance_id, self.timed_instance1_p2.next_event_due), (self.domain, self.timed_instance2_p1.schedule_instance_id, self.timed_instance2_p1.next_event_due), ]) self.assertItemsEqual( get_active_schedule_instance_ids( TimedScheduleInstance, datetime(2016, 4, 1), due_after=datetime(2016, 2, 1), ), [])
def test_get_active_timed_schedule_instance_ids(self): self.assertItemsEqual( get_active_schedule_instance_ids( TimedScheduleInstance, datetime(2017, 4, 1), due_after=datetime(2017, 2, 1), ), [(self.domain, self.timed_instance1.schedule_instance_id, self.timed_instance1.next_event_due), (self.domain, self.timed_instance2.schedule_instance_id, self.timed_instance2.next_event_due)], ) self.assertItemsEqual( get_active_schedule_instance_ids( TimedScheduleInstance, datetime(2016, 4, 1), due_after=datetime(2016, 2, 1), ), [] )
def test_get_active_alert_schedule_instance_ids(self): self.assertItemsEqual( get_active_schedule_instance_ids( AlertScheduleInstance, datetime(2017, 4, 1), due_after=datetime(2017, 2, 1), ), [ (self.domain, self.alert_instance1_p1.schedule_instance_id, self.alert_instance1_p1.next_event_due), (self.domain, self.alert_instance2_p2.schedule_instance_id, self.alert_instance2_p2.next_event_due), ] ) self.assertItemsEqual( get_active_schedule_instance_ids( AlertScheduleInstance, datetime(2016, 4, 1), due_after=datetime(2016, 2, 1), ), [] )
def create_tasks(self): for cls in (AlertScheduleInstance, TimedScheduleInstance): for domain, schedule_instance_id, next_event_due in get_active_schedule_instance_ids( cls, datetime.utcnow()): if skip_domain(domain): continue enqueue_lock = self.get_enqueue_lock(cls, schedule_instance_id, next_event_due) if enqueue_lock.acquire(blocking=False): self.get_task(cls).delay(schedule_instance_id) for cls in (CaseAlertScheduleInstance, CaseTimedScheduleInstance): for domain, case_id, schedule_instance_id, next_event_due in get_active_case_schedule_instance_ids( cls, datetime.utcnow()): if skip_domain(domain): continue enqueue_lock = self.get_enqueue_lock(cls, schedule_instance_id, next_event_due) if enqueue_lock.acquire(blocking=False): self.get_task(cls).delay(case_id, schedule_instance_id)
def create_tasks(self): for cls in (AlertScheduleInstance, TimedScheduleInstance): for domain, schedule_instance_id, next_event_due in get_active_schedule_instance_ids( cls, datetime.utcnow()): if skip_domain(domain): continue # We use a non-blocking lock here with a timeout of one hour to make sure # that we only retry non-processed schedule instances once an hour. enqueue_lock = self.get_enqueue_lock(cls, schedule_instance_id, next_event_due) if enqueue_lock.acquire(blocking=False): self.get_task(cls).delay(schedule_instance_id) for cls in (CaseAlertScheduleInstance, CaseTimedScheduleInstance): for domain, case_id, schedule_instance_id, next_event_due in get_active_case_schedule_instance_ids( cls, datetime.utcnow()): if skip_domain(domain): continue # See comment above about why we use a non-blocking lock here. enqueue_lock = self.get_enqueue_lock(cls, schedule_instance_id, next_event_due) if enqueue_lock.acquire(blocking=False): self.get_task(cls).delay(case_id, schedule_instance_id)