Google App Engine双应用Cron Job部署后仅一个运行的问题求助
解决Google App Engine仅一个Cron Job执行的问题
我之前也踩过GAE Cron Job的坑,结合你的描述和配置文件,咱们来捋捋可能的问题点和解决办法:
1. 先盯紧第二个cron.yaml的target配置
你第二个cron.yaml里的target: ...这明显是占位符没替换啊!GAE的Cron Job要求target必须指定你应用中已部署的有效服务名称(就像第一个配置里的pubsubone那样)。如果target是无效值,这个Cron Job根本不会被系统正确注册,自然不会执行。
赶紧把...换成你第二个应用对应的服务名称,比如如果第二个服务叫pubsubtwo,就改成:
cron: - description: "GET second group" url: / schedule: every 5 minutes target: pubsubtwo
2. 确认部署命令的上下文是否正确
你用的gcloud app deploy app.yaml cron.yaml命令,默认是部署到当前gcloud配置的项目和服务下的。如果两个应用属于不同的GAE项目,或者同一项目下的不同服务,部署第二个应用时得切换对应的上下文:
- 如果是不同项目:先执行
gcloud config set project [你的第二个项目ID],再重新部署第二个应用的配置; - 如果是同一项目的不同服务:部署时加上服务参数:
gcloud app deploy app.yaml cron.yaml --service=[第二个服务名称]
3. 验证Cron Job的注册状态
部署完别光看应用跑起来了,得确认两个Cron Job都被系统收录了。执行这个命令:
gcloud app cron jobs list
看看输出里有没有第二个Cron Job的条目。如果没有,去查部署日志找错误:
gcloud app logs read --service=crons
日志里大概率会提示target无效或者服务找不到之类的信息。
4. 检查目标服务的版本状态
还要确保你第二个cron指定的target服务,有活跃的、已部署的版本。如果服务版本没部署成功,或者被设为非默认版本,Cron Job会找不到可执行的实例。
用这个命令查看服务状态:
gcloud app services describe [第二个服务名称]
确认输出里的版本是正常运行的状态。
按这几步排查下来,应该就能解决只有一个Cron Job执行的问题了~
内容的提问来源于stack exchange,提问作者Nicky Feller
相关产品推荐
相关产品推荐

