Tinkoff / invest-python

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

не работает стрим портфеля[Bug] #116

Closed EvgeniyKr1980 closed 2 years ago

EvgeniyKr1980 commented 2 years ago

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

беру пример из списка примеров, запускаю возвращается только в самом начале успешная подписка и все. Не изменений по портфелю, ни пингов. 31-ого августа на версии 035 все работало, потом пробовал числа 5-ого сентября - перестало

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

TOKEN = '111'
account_id = '111'
def main():

    with Client(TOKEN) as client:
        for portfoliodata in client.operations_stream.portfolio_stream(
            accounts=[account_id]
        ):
            print(datetime.now(), portfoliodata)

if __name__ == "__main__":
    main()

Tinkoff Invest Version

0.2.0-beta36

Python Version

3.8

OS

Mac OS

Логи

2022-09-14 12:24:31.002856 PortfolioStreamResponse(subscriptions=PortfolioSubscriptionResult(accounts=[AccountSubscriptionStatus(account_id='111', subscription_status=<PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS: 1>)]), portfolio=None, ping=None)
EvgeniyKr1980 commented 2 years ago

сегодня стали выскакивать ошибки: Traceback (most recent call last): File "/test_tmp.py", line 34, in main() File "/test_tmp.py", line 27, in main for portfoliodata in client.operations_stream.positions_stream( File "/Library/Python/3.8/lib/python/site-packages/tinkoff/invest/_errors.py", line 43, in wrapper yield from func(*args, **kwargs) File "/Library/Python/3.8/lib/python/site-packages/tinkoff/invest/services.py", line 1187, in positions_stream yield _grpc_helpers.protobuf_to_dataclass(response, PositionsStreamResponse) File "Library/Python/3.8/lib/python/site-packages/tinkoff/invest/_grpc_helpers.py", line 317, in protobuf_to_dataclass field_value = protobuf_to_dataclass(pb_value, field_type) File "/Library/Python/3.8/lib/python/site-packages/tinkoff/invest/_grpc_helpers.py", line 317, in protobuf_to_dataclass field_value = protobuf_to_dataclass(pb_value, field_type) File "/Library/Python/3.8/lib/python/site-packages/tinkoff/invest/_grpc_helpers.py", line 301, in protobuf_to_dataclass pb_value = getattr(pb_obj, unsafe_field_name) AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'available_value'

nagaevvi commented 2 years ago

Будут ли комментарии разработчиков по поводу AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'available_value' ? Такая же проблема уже более недели есть при стриме позиций. В чате разработчиков, в телеграме тоже несколько человек писали.

irusland commented 2 years ago

Здравствуйте! Да, я постараюсь заняться этой проблемой на выходных

irusland commented 2 years ago

Посмотрел и осознал, что я уже чинил это https://github.com/Tinkoff/invest-python/pull/115

@EvgeniyKr1980, Прикрепелнный вами трейсбек содержит for portfoliodata in client.operations_stream.positions_stream( что является стримом позиций, а не portfolio

Я не смог воспроизвести ошибку указанным в issue способом

Правда ли что ошибка повторяется? Если да, попробуйте обновиться до последней версии sdk.

EvgeniyKr1980 commented 2 years ago

трейсбек это от другого дня и по позициям - в этот день система стала вести себя по другому. По портфелю я писал в само начале - возвращается только успешная подписка и все. Больше как не передавалось ничего так и не передается по позициям, кстати, тоже ничего не передается ну и сообщение nagavvi как бы намекает, что проблема не единичная. Дайте хоть рекомендации какие-нибудь...

irusland commented 2 years ago

Воспроизвел ошибку как биржа открылась, исправил, ждем релиза следующей версии с фиксом.

Если требуется сейчас починить, можно влить https://github.com/Tinkoff/invest-python/pull/121 себе в форк

EvgeniyKr1980 commented 2 years ago

спасибо большое. А следующий релиз когда планируется?

AlexanderVolkovTCS commented 2 years ago

@EvgeniyKr1980 Добрый день, уточните пожалуйста, вы 1) подписываетесь на стриминг позиций по указанному счету 2) исполняете торговое поручение на этом счете 3) ожидаете событие в стриминге - и оно не приходит?

EvgeniyKr1980 commented 2 years ago

@AlexanderVolkovTCS, именно.

EvgeniyKr1980 commented 2 years ago

не работает стрим до сих пор. Странно, что закрыли...