예제 #1
0
    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
예제 #2
0
    def on_start(self):
        self._update_rate_limit()

        rl_timer = TimerActor(self.actor_ref, repeat=True).start()
        rl_timer.tell(30)