Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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}")
Beispiel #4
0
def test_set_with_no_ttl():
    cache = Cache()
    cache.set("one", "test")
    assert cache._items["one"].value == "test"