def test_set_with_datetime_ttl(): cache = Cache() planned = datetime.now() cache.set("one", "test", ttl=planned) assert cache._items["one"].value == "test" assert cache._items["one"].expiration.second < planned.second + 1 assert cache._items["one"].expiration.second > planned.second - 1 cache = Cache(ttl=60) planned = datetime.now() cache.set("one", "test", ttl=planned) assert cache._items["one"].value == "test" assert cache._items["one"].expiration.second < planned.second + 1 assert cache._items["one"].expiration.second > planned.second - 1
def test_set_with_timedelta_ttl(): cache = Cache() delta = timedelta(seconds=10) planned = datetime.now() + delta cache.set("one", "test", ttl=delta) assert cache._items["one"].value == "test" assert cache._items["one"].expiration.second < planned.second + 1 assert cache._items["one"].expiration.second > planned.second - 1 cache = Cache(ttl=60) delta = timedelta(seconds=10) planned = datetime.now() + delta cache.set("one", "test", ttl=delta) assert cache._items["one"].value == "test" assert cache._items["one"].expiration.second < planned.second + 1 assert cache._items["one"].expiration.second > planned.second - 1
class Pair: def __init__( self, ttl: int, exchange_name: str, currency: str, market: str, gauge: Gauge, ) -> None: self.cache = Cache(default_ttl=ttl) self.gauge = gauge self.exchange = exchanges.integrations[exchange_name]() self.currency = currency self.market = market log.debug(f"new pair {self}") def __repr__(self) -> str: return ( f"Pair({self.cache.default_ttl}, {self.exchange.name}, " f"{self.currency}, {self.market})" ) def get(self) -> None: try: candle = self.cache.get("candle") except KeyError: candle = self.exchange.get( currency=self.currency, market=self.market ) self.cache.set("candle", candle) for olhcv in helpers.EMPTY_CANDLE.keys(): self.gauge.labels( exchange=self.exchange.name, currency=self.currency, market=self.market, olhcv=olhcv, ).set(candle.__dict__[olhcv]) log.info(f"fetched {candle} for {self}")
def test_set_with_no_ttl(): cache = Cache() cache.set("one", "test") assert cache._items["one"].value == "test"