Tinkoff / invest-python

Tinkoff Invest Python gRPC client
https://tinkoff.github.io/invest-python/
Apache License 2.0
301 stars 87 forks source link

[Bug] ошибка в MarketDataCache при возвращении данных из кеша #240

Open keepitsimple opened 11 months ago

keepitsimple commented 11 months ago

Что случилось?

Ваш пример examples/download_all_candles.py при повторном запуске возвращает РАЗНОЕ кол-во данных

  1. Для наглядности проблемы нужно увеличить интервал с 1 минуты на 1 день и проблема сразу станет видна (см код).
  2. Запустить код первый раз - код возвращает данные для 4 дней (как и запрошено)
  3. Запустить код повторно (будет использоваться кеш) - в этот раз код вернет данные только для 2 дней

я проверил автотесты для MarketDataCache и я не нашел теста сравнения данных возвращаемых первый раз и из кеша.

Воспроизведение

def main():
    with Client(TOKEN) as client:
        settings = MarketDataCacheSettings(base_cache_dir=Path("market_data_cache"))
        market_data_cache = MarketDataCache(settings=settings, services=client)
        for candle in market_data_cache.get_all_candles(
            figi="BBG004730N88",
            from_=now() - timedelta(days=3),
            interval=CandleInterval.CANDLE_INTERVAL_DAY,
        ):
            print(candle.time)

    return 0

Tinkoff Invest Version

0.2.0-beta58

Python Version

3.8

OS

Mac OS

Логи

# 1ый запуск - правильный ответ
2023-07-19 07:00:00+00:00
2023-07-20 07:00:00+00:00
2023-07-21 07:00:00+00:00
2023-07-22 07:00:00+00:00

# 2ой запуск - неправильный ответ
2023-07-20 07:00:00+00:00
2023-07-21 07:00:00+00:00
irusland commented 11 months ago

Поведение воспроизвел, тест на это есть - test_loads_from_net_then_from_cache. Сейчас буду разбираться.