Получение протобуфа текущей метки времени - PullRequest
0 голосов
/ 25 марта 2019

Управляемый для создания сценария и запуска его для планирования заданий через API Google (служба передачи данных BigQuery), сценарий использует protobuf message Timestamp type для установки даты начала и окончания. Я не могу изменить это на текущую метку времени.

Проверка следующих ресурсов:

Я попытался установить атрибуты, подобные приведенным ниже, но это выдает ошибку «Запрос содержит недопустимый аргумент».

now = time.time()
seconds = int(now)
start_time = Timestamp(seconds=seconds, nanos=0)
end_time = Timestamp(seconds=seconds, nanos=0)

См. Рабочий пример ниже:

#!/usr/bin/env python
from google.cloud import bigquery_datatransfer
from google.protobuf.timestamp_pb2 import Timestamp

client = bigquery_datatransfer.DataTransferServiceClient()

start_time = Timestamp()
end_time = Timestamp()

client.schedule_transfer_runs(client.get_transfer_config("projects/{project_id}/locations/europe/transferConfigs/{transfer_id}").name,
                              start_time=start_time,
                              end_time=end_time)

Это работает, но отправляет запрос в API для отметки времени 1970-01-01T00:00:00Z для времени начала и окончания - я хочу иметь возможность изменить ее на текущую отметку времени.

1 Ответ

1 голос
/ 25 марта 2019

Как отмечено в Timestamp документах , есть несколько способов сделать это.Если вы просто хотите построить временную метку с текущим временем, вы можете просто использовать timestamp_message.GetCurrentTime().Если вы хотите заполнить временную метку значением seconds, вы можете просто использовать timestamp_message.FromSeconds(seconds).

. В качестве более полного примера

start_time = Timestamp()
start_time.GetCurrentTime()  # Stores the current time in start_time.
end_time = Timestamp()
seconds = 12345
end_time.FromSeconds(seconds)  # Stores the number of seconds in end_time.

Для вашего конкретного случая вы должныспособен сделать

#!/usr/bin/env python
from google.cloud import bigquery_datatransfer
from google.protobuf.timestamp_pb2 import Timestamp

client = bigquery_datatransfer.DataTransferServiceClient()

start_time = Timestamp()
start_time.GetCurrentTime()
end_time = Timestamp()
end_time.GetCurrentTime()

client.schedule_transfer_runs(client.get_transfer_config("projects/{project_id}/locations/europe/transferConfigs/{transfer_id}").name,
                              start_time=start_time,
                              end_time=end_time)
...