RussianInvestments / invest-python

Invest Python gRPC client
https://russianinvestments.github.io/invest-python/
Apache License 2.0
66 stars 21 forks source link

[Bug] RESOURCE_EXHAUSTED блокирует все последующие запросы API в синхронном клиенте #24

Open pt-alexanderpetryaev opened 7 months ago

pt-alexanderpetryaev commented 7 months ago

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

Проверено на get_trading_statuses.

Я пытался загрузить статусы инструментов по списку тикеров MOEX - разумеется их больше чем лимит запросов в минуту.

Разумеется, я пытался обрабатывать RequestError:

try:
    if share.tradingStatus() == SecurityTradingStatus.SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING or share.tradingStatus() == SecurityTradingStatus.SECURITY_TRADING_STATUS_NORMAL_TRADING:
        shares.append(share)
    break
except RequestError as e:            
    print( 'Waiting for rate limit reset for ', str(e.metadata.ratelimit_reset + 5), ' sec.')
    time.sleep( e.metadata.ratelimit_reset + 5 )

Но после первого RequestError, API всегда возвращает RequestError вплоть до перезапуска скрипта, независимо от того сколько раз я откладываю последующие запросы.

None GetTradingStatuses RESOURCE_EXHAUSTED 
Waiting for rate limit reset for  46  sec.
None GetTradingStatuses RESOURCE_EXHAUSTED 
Waiting for rate limit reset for  56  sec.
None GetTradingStatuses RESOURCE_EXHAUSTED 
Waiting for rate limit reset for  55  sec.

Возможно я делаю что-то не так как предполагалось разработчиками API? Как мне правильно обрабатывать эту ситуацию?

Заранее спасибо.

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

No response

Tinkoff Invest Version

0.2.0-beta97

Python Version

3.11

OS

Windows

Логи

No response