Example #1
0
    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)
Example #2
0
    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),
            ),
            []
        )
Example #6
0
    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)