diff options
author | thenewone <thenewone@yandex-team.com> | 2025-04-09 21:22:01 +0300 |
---|---|---|
committer | thenewone <thenewone@yandex-team.com> | 2025-04-09 21:34:50 +0300 |
commit | fb4b3214c08aff5629ec68a0dc02066012ab962c (patch) | |
tree | c3297914a344ba0b0a9e62020626b4ce6e678364 /contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/AmazonWebServiceRequest.cpp | |
parent | 8ea2310750aafd8bed4ba64021e25b089304d4ed (diff) | |
download | ydb-fb4b3214c08aff5629ec68a0dc02066012ab962c.tar.gz |
Introduce flow execute command.
Fixed flow command timeout issue on a way there.
Ранее у Flow было несколько команд (set\_pipeline\_spec, get\_pipeline\_spec etc) которые были поддержаны YT на всех уровнях. Это включало `yt` command line utility, клиент python и YT прокси. Можно в любом месте позвать `ya tool yt flow set_pipeline_spec/…` и оно выполнится на указанном pipeline\`е.
Проблема только в том, что для того, чтобы добавить новую команду - надо зарелизить все уровни, и CLI утилиту и прокси.
Flow execute это специальная команда, которая призвана решить эту проблему. В этой команде пользователь указывает имя нужной flow команды и опциональный абстрактный аргумент, и возвращает она нечто абстрактное. Как только эту штуку поддержат утилита и прокси, можно будет добавлять новые команды, зарелизив только flow, и использовать flow execute для их вызова.
Ввиду общего назначения flow execute должен иметь иметь возможность передавать любой возможный аргумент (в частности не передавать вообще) и возвращать любой результат (в частности не возвращать никакой). Для гибкости нужно указывать форматы обоих этих штук.
Детали реализации могут идти несколько в разрез с существующими практиками:
В GRPC интерфейсы аргумент и результат передаются строго в YSON, опциональным полем в protobuf.
В питоне по-умолчанию и аргумент и результат - нативные значения и объекты языка. Понятно, что в этом случае аргумент будет сериализован в YSON для передачи в protobuf, а результат будет десериализован из YSON на обратном пути. Однако можно указать именованный аргумент input\_format=json/yson и тогда в качестве аргумента можно передать уже сериализованную yson/json строку/bin. Также можно указать output\_format=json/yson и результат будет binary с сериализованном в данном формате объектом.
В консольной утилите аргумент по-умолчанию считается в нативном формате (то есть строкой). Но поскольку строки недостаточно, чтобы выразить результат, поэтому по-умолчанию выводится в текстовом yson, с отступами, human-readable. Соотвественно --input-format позволяет передать заранее сериализованный аргумент, а --output-format - вывести результат в другом формате.
commit_hash:5a53cb5508b09765622da55e6d2f986c3cf73b3b
Diffstat (limited to 'contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/AmazonWebServiceRequest.cpp')
0 files changed, 0 insertions, 0 deletions