def _update_rate_limit(self): rl_actor = RateLimitActor(self.actor_ref, self.twitter).start() rate_limit = rl_actor.ask(self.used_resources) for resource_family in rate_limit: for resource in resource_family: local_count = self.local_remainings.get(resource, None) remote_count = int( rate_limit[resource_family][resource]['remaining'] ) if not local_count: self.local_remainings[resource] = remote_count else: if local_count != remote_count and local_count > remote_count: print '[Daemon] Local count %d is more than\ remote on %d.' % (local_count, remote_count) self.local_remainings[resource] = remote_count if self.reset_timers.get(resource, None): self.reset_timers[resource].stop() timer_actor = TimerActor(self.actor_ref).start() timer_actor.tell(int( rate_limit[resource_family][resource]['reset'] )) self.reset_timers[resource] = timer_actor
def on_start(self): self._update_rate_limit() rl_timer = TimerActor(self.actor_ref, repeat=True).start() rl_timer.tell(30)