【发布时间】:2021-03-28 11:50:31
【问题描述】:
我在获取 cron 作业以正确定位 Python 应用程序的 Google App Engine 标准上的特定服务时遇到问题。 我可以使用 app.yaml 文件和 cron.yaml 文件成功地为 Google App Engine(标准)上的 python 应用程序创建一个 cron 作业。该服务未定义,是默认服务。 cron.yaml 没有指定目标。 如果我将 app.yaml 文件中的服务名称设置为 service1, 应用的 URL 从 projectID.ew.r.appspot.com 更改为 service1-dot-projectID.ew.r.appspot.com。
接下来,我将 cron 作业中的目标指定为 service1,并重新部署 app.yaml 和 cron.yaml。 现在,cron 作业每次运行都会失败,状态为 400。 从我在 ProtoPayLoad 日志中可以看到,主机没有使用正确的 URL。
根据日志中的 protoPayLoad“host”值,cron 作业使用 URL service1.projectID.ew.r.appspot.com。 cron 作业返回状态 400。 为什么 cron 作业不使用 service1-dot-projectID.ew.r.appspot.com URL? 我该怎么做才能让 cron 作业正确地针对特定服务?
#app.yaml with working cron job
#project URL: projectID.ew.r.appspot.com
runtime: python38
handlers:
- url: /static
static_dir: static/
- url: /.*
script: auto
#cron.yaml with working cron job
cron:
- description: "working cron job"
url: /myjob/
schedule: every 2 minutes
这是损坏的 cron 作业的文件版本
#app.yaml with broken cron job
#project URL: service1-dot-projectID.ew.r.appspot.com
service: service1
runtime: python38
handlers:
- url: /static
static_dir: static/
- url: /.*
script: auto
#cron.yaml with working cron job
cron:
- description: "working cron job"
url: /myjob/
schedule: every 2 minutes
target: service1
应用引擎日志文件中的错误包含 protoPayLoad 详细信息。
host:"service1.projectID.ew.r.appspot.com"
我觉得应该是下面这个
host:"service1-dot-projectID.ew.r.appspot.com"
我的项目部署了多个服务,这些服务将使用特定于每个服务的 cron 作业。 我不能只使用默认服务名称。 感谢所有帮助。
【问题讨论】:
标签: python-3.x google-app-engine service cron yaml