具有相对 URI 的 Cloud Tasks App Engine 目标抛出异常 400:需要 HttpRequest.url
Cloud Tasks App Engine target with relative URI throws Exception 400 : HttpRequest.url is required
我正在尝试使用 Python 客户端 google-cloud-tasks==2.1.0
使用 Google Cloud Tasks 创建任务,但我收到一个异常,需要 HttpRequest.url。我正在设置相对 url 这是一个 URL 在我的应用程序中处理任务。
队列存在并使用以下方法创建:
gcloud task create queue notifications
代码:
client = tasks_v2.CloudTasksClient()
parent = client.queue_path(project, location, queue)
task = {
'app_engine_http_request': {
'http_method': tasks_v2.HttpMethod.POST,
'relative_uri': notification_url,
'body': payload.encode('utf-8')
},
'http_request': {
'headers': {"Content-type": "application/json"}
}
}
response = client.create_task(parent=parent, task=task)
我收到的确切错误是:
google.api_core.exceptions.InvalidArgument: 400 HttpRequest.url is required
我正在尝试在我的 App Engine 标准环境中创建任务。
您的任务有两个目标,即 App Engine 和 HTTP。在 HTTP 上,URL 是必需的,如 creating HTTP target tasks 中指定的那样。
URL 必须以 'http://' 或 'https://' 开头。要解决此问题,请更新您的 http_request
:
'http_request': {
'headers': {"Content-type": "application/json"},
'url': "https://[SERVICE-URL]" + notification_url
}
或者,删除 http_request
并在声明您的任务后像这样指定您的 header:
任务["http_request"]["headers"] = {"Content-type": "application/json"}
编辑:指定App Engine headers时,也可以这样写:
task["app_engine_http_request"]["headers"] = {"Content-type": "application/json"}
@Donald 是对的,但我认为他链接的 google 文档中有错字。我将 headers 设置在 app_engine_http_request
内,而不是 http_request
。
我认为你不能同时提供app_engine_http_request
和http_request
,你只能提供一个。所以像这样:
client = tasks_v2.CloudTasksClient()
parent = client.queue_path(project, location, queue)
task = {
'app_engine_http_request': {
'http_method': tasks_v2.HttpMethod.POST,
'relative_uri': notification_url,
'headers': {
'Content-Type': 'application/json'
},
'body': payload.encode('utf-8')
}
}
response = client.create_task(parent=parent, task=task)
我正在尝试使用 Python 客户端 google-cloud-tasks==2.1.0
使用 Google Cloud Tasks 创建任务,但我收到一个异常,需要 HttpRequest.url。我正在设置相对 url 这是一个 URL 在我的应用程序中处理任务。
队列存在并使用以下方法创建:
gcloud task create queue notifications
代码:
client = tasks_v2.CloudTasksClient()
parent = client.queue_path(project, location, queue)
task = {
'app_engine_http_request': {
'http_method': tasks_v2.HttpMethod.POST,
'relative_uri': notification_url,
'body': payload.encode('utf-8')
},
'http_request': {
'headers': {"Content-type": "application/json"}
}
}
response = client.create_task(parent=parent, task=task)
我收到的确切错误是:
google.api_core.exceptions.InvalidArgument: 400 HttpRequest.url is required
我正在尝试在我的 App Engine 标准环境中创建任务。
您的任务有两个目标,即 App Engine 和 HTTP。在 HTTP 上,URL 是必需的,如 creating HTTP target tasks 中指定的那样。
URL 必须以 'http://' 或 'https://' 开头。要解决此问题,请更新您的 http_request
:
'http_request': {
'headers': {"Content-type": "application/json"},
'url': "https://[SERVICE-URL]" + notification_url
}
或者,删除 http_request
并在声明您的任务后像这样指定您的 header:
任务["http_request"]["headers"] = {"Content-type": "application/json"}
编辑:指定App Engine headers时,也可以这样写:
task["app_engine_http_request"]["headers"] = {"Content-type": "application/json"}
@Donald 是对的,但我认为他链接的 google 文档中有错字。我将 headers 设置在 app_engine_http_request
内,而不是 http_request
。
我认为你不能同时提供app_engine_http_request
和http_request
,你只能提供一个。所以像这样:
client = tasks_v2.CloudTasksClient()
parent = client.queue_path(project, location, queue)
task = {
'app_engine_http_request': {
'http_method': tasks_v2.HttpMethod.POST,
'relative_uri': notification_url,
'headers': {
'Content-Type': 'application/json'
},
'body': payload.encode('utf-8')
}
}
response = client.create_task(parent=parent, task=task)