MCPcopy
hub / github.com/celery/celery / Timer

Class Timer

celery/concurrency/gevent.py:42–82  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40
41
42class Timer(_timer.Timer):
43
44 def __init__(self, *args, **kwargs):
45 from gevent import Greenlet, GreenletExit
46
47 class _Greenlet(Greenlet):
48 cancel = Greenlet.kill
49
50 self._Greenlet = _Greenlet
51 self._GreenletExit = GreenletExit
52 super().__init__(*args, **kwargs)
53 self._queue = set()
54
55 def _enter(self, eta, priority, entry, **kwargs):
56 secs = max(eta - monotonic(), 0)
57 g = self._Greenlet.spawn_later(secs, entry)
58 self._queue.add(g)
59 g.link(self._entry_exit)
60 g.entry = entry
61 g.eta = eta
62 g.priority = priority
63 g.canceled = False
64 return g
65
66 def _entry_exit(self, g):
67 try:
68 g.kill()
69 finally:
70 self._queue.discard(g)
71
72 def clear(self):
73 queue = self._queue
74 while queue:
75 try:
76 queue.pop().kill()
77 except KeyError:
78 pass
79
80 @property
81 def queue(self):
82 return self._queue
83
84
85class TaskPool(base.BasePool):

Callers 1

test_schedMethod · 0.90

Calls

no outgoing calls

Tested by 1

test_schedMethod · 0.72