def Poll (self, within_seconds=None):
# print "poll within", within_seconds
results = [ ]
candidates = self.master.openaps.things.get('schedules', [ ])
now = datetime.datetime.now( )
# print "polling schedules", len(candidates), now.isoformat( ), 'for', self.MaxTasksAhead, 'MaxTasksAhead'
for configured in candidates:
# print "SCHEDULE", configured.item.fields
# spec = recurrent.parse(configured.item.fields['rrule'], now=self.since)
spec = configured.item.fields['rrule']
rr = rrule.rrulestr(spec, dtstart=self.since)
# print configured.item.fields['rrule'], spec
upcoming = rr.after(now)
# print "next", upcoming.isoformat( )
# XXX: bug in making: need to fill out all events before within_seconds as well.
# if (upcoming - now).total_seconds( ) <= within_seconds:
for upcoming in iter_triggers(upcoming, rr, within_seconds):
# print "ARM THING", configured.path
# print "ATTEMPT ARM", configured.item.name, configured.path, spec
# self.enqueue(upcoming, configured)
trigger = Armable(upcoming, configured)
# exists = self.schedules[(upcoming, configured.item.name)]
results.append(trigger)
return results
pass
评论列表
文章目录