Похоже, вы путаете клиентские библиотеки Google Cloud Python с базовыми Protobufs и gRPCs отдельных служб. GetOperation
- это метод rpc службы Operation
, определенный здесь . Он принимает сообщение GetOperationRequest
и возвращает сообщение Operation
. Сообщения Protobuf предназначены для компиляции в нативные классы на разных языках программирования, в Python они фактически становятся дескрипторами. Дескрипторы для всех сообщений, относящихся к длительным операциям, поставляются с библиотекой google-api-core
, которая, в свою очередь, поставляется с каждой клиентской библиотекой Google Cloud Python (например, dialogflow
). Вот почему вы можете технически использовать дескрипторы protobuf напрямую, импортируя их из клиентской библиотеки:
from google.longrunning.operations_pb2 import Operation
Тогда вам нужно будет только создать заглушки для клиента и сервера gRPC, и вы готовы к работе:)
В реальной жизни вы, конечно, должны игнорировать все это (включая метод GetOperation
и интерфейс Operations
) и вместо этого использовать клиентские библиотеки Google Cloud , из которых по одному для каждого Облачный сервис Google на каждом из основных языков программирования, которые поставляются с основными модулями для общих задач, таких как аутентификация, выставление счетов и управление длительными операциями. Эти библиотеки абстрагируют материал Protobuf / gRPC для конечных пользователей.
В вашем случае вы хотели бы взглянуть на google.api_core.operations_v1.OperationsClient
, который вы можете использовать для управления экземплярами google.api_core.operation.Operation
.
Другой вопрос, если вам это действительно нужно. Я никогда не видел, чтобы обучение агента Dialogflow занимало более нескольких секунд, и после того, как агент настроен, это также не то, что нужно делать снова и снова. Вы действительно должны управлять этой операцией вручную и даже хранить метаданные о ней во внешней базе данных?