diff --git a/tools/pc-metrics/push-metrics-ble.py b/tools/pc-metrics/push-metrics-ble.py index 4ae9192..b29bc64 100644 --- a/tools/pc-metrics/push-metrics-ble.py +++ b/tools/pc-metrics/push-metrics-ble.py @@ -548,12 +548,13 @@ class CodexRateLimitReader: if now < self.next_refresh: return self.cached - self.next_refresh = now + self.refresh_seconds if not self._ensure_started(): + self.next_refresh = now + min(10.0, self.refresh_seconds) return self.cached request_id = self._send("account/rateLimits/read") if request_id is None: + self.next_refresh = now + min(10.0, self.refresh_seconds) return self.cached message = self._wait_for(request_id, 8.0) @@ -561,8 +562,10 @@ class CodexRateLimitReader: rate_limits = result.get("rateLimits") if isinstance(result, dict) else None if not isinstance(rate_limits, dict): self._stop() + self.next_refresh = now + min(10.0, self.refresh_seconds) return self.cached + self.next_refresh = now + self.refresh_seconds primary = rate_limits.get("primary") or {} secondary = rate_limits.get("secondary") or {} reset_credits = result.get("rateLimitResetCredits") or {} @@ -624,20 +627,23 @@ class CodexRateLimitReader: if now < self.next_usage_refresh: return self.usage_cached - self.next_usage_refresh = now + self.usage_refresh_seconds if not self._ensure_started(): + self.next_usage_refresh = now + min(15.0, self.usage_refresh_seconds) return self.usage_cached request_id = self._send("account/usage/read") if request_id is None: + self.next_usage_refresh = now + min(15.0, self.usage_refresh_seconds) return self.usage_cached message = self._wait_for(request_id, 8.0) result = message.get("result") if message else None buckets = result.get("dailyUsageBuckets") if isinstance(result, dict) else None if not isinstance(buckets, list) or not buckets: + self.next_usage_refresh = now + min(15.0, self.usage_refresh_seconds) return self.usage_cached + self.next_usage_refresh = now + self.usage_refresh_seconds self.usage_cached = self._daily_bars_from_buckets(buckets) return self.usage_cached