我正在尝试按照 run_job 文档从 python 脚本触发 GCP Cloud Run 作业(https://cloud.google.com/python/docs/reference/run/latest/google.cloud.run_v2.services.jobs .JobsClient#google_cloud_run_v2_services_jobs_JobsClient_run_job)。但是,我遇到了无法调试的错误。
这是一个已经存在的作业,但我需要覆盖一个环境变量。
这是我的代码:
env_vars = [
run_v2.EnvVar(name="VAR_1", value="var_1_value"),
run_v2.EnvVar(name="VAR_2", value="var_2_value"),
]
# Set the env vars as container overrides
container_overrides = run_v2.RunJobRequest.Overrides.ContainerOverride(
name="myjobname",
env=env_vars
)
request_override = run_v2.RunJobRequest.Overrides(
container_overrides=container_overrides
)
# Initialize the request
job_name = f"projects/myproject/locations/mylocation/jobs/myjob"
request = run_v2.RunJobRequest(
name=job_name,
overrides=request_override
)
# Make the request
operation = client.run_job(request=request)
logging.info("Waiting for operation to complete...")
response = operation.result()
logging.info(f"Operation result: {response}")
这是我遇到的错误:
Traceback (most recent call last):
File "/opt/python3.8/lib/python3.8/site-packages/airflow/decorators/base.py", line 220, in execute
return_value = super().execute(context)
File "/opt/python3.8/lib/python3.8/site-packages/airflow/operators/python.py", line 181, in execute
return_value = self.execute_callable()
File "/opt/python3.8/lib/python3.8/site-packages/airflow/operators/python.py", line 198, in execute_callable
return self.python_callable(*self.op_args, **self.op_kwargs)
File "/home/airflow/gcs/dags/etl.py", line 128, in run_acolite
request = run_v2.RunJobRequest(
File "/opt/python3.8/lib/python3.8/site-packages/proto/message.py", line 604, in __init__
super().__setattr__("_pb", self._meta.pb(**params))
TypeError: Message must be initialized with a dict: google.cloud.run.v2.RunJobRequest
谢谢!
我们最近开始在工作场所使用Cloud Run Jobs服务,我发现自己需要执行相同的任务。
需要具有覆盖规范的字典。我已经根据您的示例修改了 Initialize request 块。
override_spec = {
'container_overrides': [
{
'env': [
{'name': 'VAR_1', 'value': 'var_1_value'}
]
}
]
}
# Initialize the request
job_name = f"projects/myproject/locations/mylocation/jobs/myjob"
request = run_v2.RunJobRequest(
name=job_name,
overrides=override_spec
)