spacepaste

  1.  
  2. def tick(self, event_t=event_t, min=min, heappop=heapq.heappop,
  3. heappush=heapq.heappush):
  4. """Run a tick - one iteration of the scheduler.
  5. Executes one due task per call.
  6. Returns:
  7. float: preferred delay in seconds for next call.
  8. """
  9. adjust = self.adjust
  10. max_interval = self.max_interval
  11. if (self._heap is None or
  12. not self.schedules_equal(self.old_schedulers, self.schedule)):
  13. self.old_schedulers = copy.copy(self.schedule)
  14. self.populate_heap()
  15. H = self._heap
  16. if not H:
  17. return max_interval
  18. event = H[0]
  19. entry = event[2]
  20. is_due, next_time_to_run = self.is_due(entry)
  21. print ('is_due:%s, nex_time_to_run:%s' % (is_due, next_time_to_run))
  22. if is_due:
  23. verify = heappop(H)
  24. print 'verify'
  25. print verify
  26. print event
  27. if verify is event:
  28. next_entry = self.reserve(entry)
  29. print 'next_entry %s' % next_entry
  30. self.apply_entry(entry, producer=self.producer)
  31. print 'heappush? %s' % heappush(H, event_t(self._when(next_entry, next_time_to_run),
  32. event[1], next_entry))
  33. print 'return 0'
  34. return 1
  35. else:
  36. heappush(H, verify)
  37. print 'verify[0]%s' % verify[0]
  38. return min(verify[0], max_interval)
  39. print adjust(next_time_to_run)
  40. print max_interval
  41. return min(adjust(next_time_to_run) or max_interval, max_interval)
  42.