繁体   English   中英

GCloud AppEngine 任务执行返回 403

[英]GCloud AppEngine Task execution returns 403

在 Google AppEngine 上使用推送队列和灵活的环境执行使用default服务创建的任务(将在backend服务上执行)时出现 403(禁止)错误。 任务成功推送到队列,本地确认,但是任务执行失败,日志:

INFO     2020-12-24 13:42:39,897 module.py:865] default: "POST /tasks/test-handler HTTP/1.1" 403 31
WARNING  2020-12-24 13:42:39,897 taskqueue_stub.py:2158] Task task2 failed to execute. The task has no remaining retries. Failing permanently after 1 retries and 0 seconds

同样的情况发生在本地和生产环境中。 但是,如果使用 cron 作业创建任务,则执行工作正常。 我将dev_appserver.py与 Go 1.11 一起使用,并具有以下.yaml定义:

# backend service
service: backend
runtime: go111
instance_class: F2

inbound_services:
- warmup
- default

handlers:
- url: /tasks/.*
  login: admin
  redirect_http_response_code: 301

# default app service
service: default
runtime: go111
instance_class: F2

inbound_services:
- warmup

handlers:
- url: /api/.*
  script: auto
  secure: always
  redirect_http_response_code: 301

初始 API 请求到达/api端点,然后使用以下方法成功推送队列消息:

t := taskqueue.NewPOSTTask(taskURL, url.Values{
    "testParam": {strconv.Itoa(testParam)},
})

if _, err := taskqueue.Add(ctx, t, "test-queue"); err != nil {
    return ErrPublishingTaskToQueue
}

我的queue.yaml定义(实际上我还有更多):

total_storage_limit: 120M
queue:
- name: test-queue
  rate: 1/s
  bucket_size: 100
  max_concurrent_requests: 10
  retry_parameters:
      task_retry_limit: 1

如果任务不是通过 cron 作业创建的,为什么我会在任务执行时获得 403(禁止)状态? 关于此事的文档和现有资源没有多大帮助:/

设法让它发挥作用。 如果有人在为 Google AppEngine 上的推送队列执行任务时遇到 403 响应,请确保您设置了正确的目标服务。 在上面的示例中,我缺少target: backend queue.yaml中的后端:

total_storage_limit: 120M
queue:
- name: test-queue
  rate: 1/s
  bucket_size: 100
  max_concurrent_requests: 10
  target: backend
  retry_parameters:
      task_retry_limit: 1

问题是任务是使用default服务创建的,默认情况下意味着它们会命中default服务,但应该命中backend服务。 不幸的是, default服务也部署了所需的端点,所以我得到了 403 而不是 404。

有关target字段的更多详细信息: https://cloud.google.com/appengine/docs/standard/python/config/queueref#target

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM