#python #google-cloud-platform #google-cloud-functions #google-cloud-scheduler
# #python #google-облачная платформа #google-cloud-функции #google-cloud-scheduler
Вопрос:
Мне нужно проверить текущие задания облачного планировщика в моем проекте. И используя эти два фрагмента, но я не понимаю, почему я получаю ошибку, т.е.,
{Ошибка атрибута: объект ‘CloudSchedulerClient’ не имеет атрибута ‘location_path’}
И я использовал этот код из документации Google cloud.
from google.cloud.scheduler import CloudSchedulerClient
def display_cloud_scheduler(project):
client = CloudSchedulerClient.from_service_account_json(
r"./xxxx.json")
print(client)
parent = client.location_path(project, 'us-east1')
for element in client.list_jobs(parent):
print(element)
from google.cloud import scheduler_v1
def display_cloud_scheduler(project):
client = scheduler_v1.CloudSchedulerClient.from_service_account_json(
r"./xxxx.json")
print(client)
parent = client.location_path(project, 'us-east1')
for element in client.list_jobs(parent):
print(element)
У кого-нибудь есть идеи, что я делаю не так?
Ответ №1:
Не уверен, какой документации вы следуете, но в официальных документах библиотеки упоминается, что способ, которым вы работаете, — старый, и вам следует перейти на новый метод. Это объясняется в их руководстве по миграции:
Перед
from google.cloud import scheduler client = scheduler.CloudSchedulerClient() parent = client.location_path("<PROJECT_ID>", "<LOCATION>") job = { 'app_engine_http_target': { 'app_engine_routing': { 'service': service_id }, 'relative_uri': '/log_payload', 'http_method': 'POST', 'body': 'Hello World'.encode() }, 'schedule': '* * * * *', 'time_zone': 'America/Los_Angeles' } response = client.create_job(parent, job)
После
from google.cloud import scheduler client = scheduler.CloudSchedulerClient() parent = "projects/<PROJECT_ID>/locations/<LOCATION>" job = { 'app_engine_http_target': { 'app_engine_routing': { 'service': service_id }, 'relative_uri': '/log_payload', 'http_method': 'POST', 'body': 'Hello World'.encode() }, 'schedule': '* * * * *', 'time_zone': 'America/Los_Angeles' } response = client.create_job( request={ "parent": parent, "job": job } )
Поэтому я бы посоветовал проверить ваш код и использовать новые методы. Кроме того, в этом руководстве по миграции упоминается следующее о сценарии миграции, который может помочь сделать эти вещи проще:
Скрипт fixup_scheduler_{версия}_keywords.py поставляется вместе с библиотекой. Он ожидает входной каталог (с кодом для преобразования) и пустой целевой каталог.
$ fixup_scheduler_v1_keywords.py --input-directory .samples/ --output-directory samples/