Пример #1
0
    def test_handle_error(self):
        from datetime import datetime
        to_timestamp = timer2.to_timestamp
        scratch = [None]

        def _overflow(x):
            raise OverflowError(x)

        def on_error(exc_info):
            scratch[0] = exc_info

        s = timer2.Schedule(on_error=on_error)

        timer2.to_timestamp = _overflow
        try:
            s.enter(timer2.Entry(lambda: None, (), {}), eta=datetime.now())
            s.enter(timer2.Entry(lambda: None, (), {}), eta=None)
            s.on_error = None
            with self.assertRaises(OverflowError):
                s.enter(timer2.Entry(lambda: None, (), {}), eta=datetime.now())
        finally:
            timer2.to_timestamp = to_timestamp

        exc = scratch[0]
        self.assertIsInstance(exc, OverflowError)
Пример #2
0
    def test_supports_Timer_interface(self):
        x = timer2.Schedule()
        x.stop()

        tref = Mock()
        x.cancel(tref)
        tref.cancel.assert_called_with()
Пример #3
0
    def test_handle_error(self):
        from datetime import datetime
        scratch = [None]

        def on_error(exc_info):
            scratch[0] = exc_info

        s = timer2.Schedule(on_error=on_error)

        with patch('kombu.async.timer.to_timestamp') as tot:
            tot.side_effect = OverflowError()
            s.enter_at(timer2.Entry(lambda: None, (), {}), eta=datetime.now())
            s.enter_at(timer2.Entry(lambda: None, (), {}), eta=None)
            s.on_error = None
            with self.assertRaises(OverflowError):
                s.enter_at(timer2.Entry(lambda: None, (), {}),
                           eta=datetime.now())
        exc = scratch[0]
        self.assertIsInstance(exc, OverflowError)
Пример #4
0
    def test_handle_error(self):
        from datetime import datetime
        mktime = timer2.mktime
        scratch = [None]

        def _overflow(x):
            raise OverflowError(x)

        def on_error(exc_info):
            scratch[0] = exc_info

        s = timer2.Schedule(on_error=on_error)

        timer2.mktime = _overflow
        try:
            s.enter(timer2.Entry(lambda: None, (), {}), eta=datetime.now())
        finally:
            timer2.mktime = mktime

        _, exc, _ = scratch[0]
        self.assertIsInstance(exc, OverflowError)
Пример #5
0
from celery.utils import timer2 as timer


def noop(*args, **kwargs):
    return


def insert(s, n=100000):
    for i in range(n):
        s.apply_after(1 + (i and i / 10.0), noop, (i, ))


def slurp(s, n=100000):
    i = 0
    it = iter(s)
    while i < n:
        delay, entry = next(it)
        if entry:
            i += 1
            s.apply_entry(entry)
        #else:
        #if delay:
        #    sleep(delay)


if __name__ == '__main__':
    s = timer.Schedule()
    insert(s)
    if '--insert-only' not in sys.argv:
        slurp(s)