Skip to content

Commit c73bb64

Browse files
committed
Tests passing
1 parent 20340d7 commit c73bb64

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

celery/beat.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,21 +209,27 @@ def apply_entry(self, entry, producer=None):
209209
else:
210210
debug('%s sent. id->%s', entry.task, result.id)
211211

212+
def adjust(self, n, drift=-0.010):
213+
if n and n > 0:
214+
return n + drift
215+
return n
216+
212217
def is_due(self, entry):
213218
return entry.is_due()
214219

215-
def tick(self, drift=-0.010, event_t=event_t, min=min,
220+
def tick(self, event_t=event_t, min=min,
216221
heappop=heapq.heappop, heappush=heapq.heappush,
217222
heapify=heapq.heapify):
218223
"""Run a tick, that is one iteration of the scheduler.
219224
220225
Executes all due tasks.
221226
222227
"""
228+
adjust = self.adjust
223229
max_interval = self.max_interval
224230
H = self._heap
225231
if H is None:
226-
H = self._heap = [event_t(e.is_due()[1] + drift or 0, 5, e)
232+
H = self._heap = [event_t(adjust(e.is_due()[1]) or 0, 5, e)
227233
for e in values(self.schedule)]
228234
heapify(H)
229235
event = H[0]
@@ -239,8 +245,7 @@ def tick(self, drift=-0.010, event_t=event_t, min=min,
239245
else:
240246
heappush(H, verify)
241247
return min(verify[0], max_interval)
242-
return min(next_time_to_run + drift if next_time_to_run
243-
else max_interval, max_interval)
248+
return min(adjust(next_time_to_run) or max_interval, max_interval)
244249

245250
def should_sync(self):
246251
return (

celery/tests/app/test_beat.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ def test_pending_tick(self):
287287
scheduler = mScheduler(app=self.app)
288288
scheduler.add(name='test_pending_tick',
289289
schedule=always_pending)
290-
self.assertEqual(scheduler.tick(), 1)
290+
self.assertEqual(scheduler.tick(), 1 - 0.010)
291291

292292
def test_honors_max_interval(self):
293293
scheduler = mScheduler(app=self.app)
@@ -303,7 +303,7 @@ def test_ticks(self):
303303
{'schedule': mocked_schedule(False, j)})
304304
for i, j in enumerate(nums))
305305
scheduler.update_from_dict(s)
306-
self.assertEqual(scheduler.tick(), min(nums))
306+
self.assertEqual(scheduler.tick(), min(nums) - 0.010)
307307

308308
def test_schedule_no_remain(self):
309309
scheduler = mScheduler(app=self.app)

0 commit comments

Comments
 (0)