Improved rate limiter code
This commit is contained in:
@@ -28,7 +28,7 @@ import requests
|
||||
from requests.exceptions import HTTPError
|
||||
|
||||
from src import shared
|
||||
from src.utils.rate_limiter import PickHistory, RateLimiter
|
||||
from src.utils.rate_limiter import RateLimiter
|
||||
|
||||
|
||||
class SteamError(Exception):
|
||||
@@ -72,14 +72,16 @@ class SteamRateLimiter(RateLimiter):
|
||||
refill_period_tokens = 200
|
||||
burst_tokens = 100
|
||||
|
||||
def __init__(self) -> None:
|
||||
# Load pick history from schema
|
||||
# (Remember API limits through restarts of Cartridges)
|
||||
def _init_pick_history(self) -> None:
|
||||
"""
|
||||
Load the pick history from schema.
|
||||
|
||||
Allows remembering API limits through restarts of Cartridges.
|
||||
"""
|
||||
super()._init_pick_history()
|
||||
timestamps_str = shared.state_schema.get_string("steam-limiter-tokens-history")
|
||||
self.pick_history = PickHistory(self.refill_period_seconds)
|
||||
self.pick_history.add(*json.loads(timestamps_str))
|
||||
self.pick_history.remove_old_entries()
|
||||
super().__init__()
|
||||
|
||||
def acquire(self) -> None:
|
||||
"""Get a token from the bucket and store the pick history in the schema"""
|
||||
@@ -91,9 +93,7 @@ class SteamRateLimiter(RateLimiter):
|
||||
class SteamFileHelper:
|
||||
"""Helper for steam file formats"""
|
||||
|
||||
def get_manifest_data(
|
||||
self, manifest_path: Path
|
||||
) -> SteamManifestData: # TODO: Geoff: fix typing issue
|
||||
def get_manifest_data(self, manifest_path: Path) -> SteamManifestData:
|
||||
"""Get local data for a game from its manifest"""
|
||||
|
||||
with open(manifest_path, "r", encoding="utf-8") as file:
|
||||
|
||||
Reference in New Issue
Block a user