You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Столкнулся с тем, что поднадобилось обратбатывать ответы в видк словарей.
В АПИ постоянная конвертация из датакласса в протобуф и обратно.
Например, все ответы от сервера прозодят через это: _grpc_helpers.protobuf_to_dataclass(response, MarketDataResponse)
При этом в датаклассе остаются артефакты от Protobuf'а:
Что делает затруднительным перевод ответа в нативные типы, например в словарь, и тем более затрудняет перевод в JSON, для отправки в веб-интерфейс (UI так реализован).
Желаемое решение
Предлагаю сделать перевод ответов опциональным и включенным по-умогчанию, так как, видимо, решено было строить АПИ на датаклассах(что на мой личный взгляд является неоднозначным решением). Так как любое изменение proto-контрактов будет требовать ручного добавления/изменения в invest-python датаклассов и их обработчиков.
На данный момент частично решил проблему так в файле _grpc_helpers.py :
Ответы от сервера после этого посылаю в: from google.protobuf.json_format import MessageToJson, MessageToDict
Дополнительно
Возможно, что можно решить ситуацию добавив параметры, в которых можно задавать в каких видах я желаю получать ответы от сервера. например (resp_json=False, resp_dict=True, resp_dataclass=True)
Или доделать реализыцию grpc_helpers.protobuf_to_dataclass, чтобы корректно переводила все protobuf-типы в нативные питоновские. Но этот вариант - самый неоптимальный, так как будет происходить конвертация protobuf -> dataclass -> dict -> JSON, вместо простого (уже реализованного Гуглом) protobuf -> JSON.
The text was updated successfully, but these errors were encountered:
Описание
Столкнулся с тем, что поднадобилось обратбатывать ответы в видк словарей.
В АПИ постоянная конвертация из датакласса в протобуф и обратно.
Например, все ответы от сервера прозодят через это:
_grpc_helpers.protobuf_to_dataclass(response, MarketDataResponse)
При этом в датаклассе остаются артефакты от Protobuf'а:
Что делает затруднительным перевод ответа в нативные типы, например в словарь, и тем более затрудняет перевод в JSON, для отправки в веб-интерфейс (UI так реализован).
Желаемое решение
Предлагаю сделать перевод ответов опциональным и включенным по-умогчанию, так как, видимо, решено было строить АПИ на датаклассах(что на мой личный взгляд является неоднозначным решением). Так как любое изменение proto-контрактов будет требовать ручного добавления/изменения в invest-python датаклассов и их обработчиков.
На данный момент частично решил проблему так в файле
_grpc_helpers.py
:Ответы от сервера после этого посылаю в:
from google.protobuf.json_format import MessageToJson, MessageToDict
Дополнительно
Возможно, что можно решить ситуацию добавив параметры, в которых можно задавать в каких видах я желаю получать ответы от сервера. например
(resp_json=False, resp_dict=True, resp_dataclass=True)
Или доделать реализыцию
grpc_helpers.protobuf_to_dataclass
, чтобы корректно переводила все protobuf-типы в нативные питоновские. Но этот вариант - самый неоптимальный, так как будет происходить конвертацияprotobuf -> dataclass -> dict -> JSON
, вместо простого (уже реализованного Гуглом)protobuf -> JSON
.The text was updated successfully, but these errors were encountered: