Cron作业在Google Appengine中使用CodeIgniter失败


Cron job failed using CodeIgniter in Google Appengine

在谷歌应用引擎中使用PHP框架时,当我使用带有login:required的index.PHP url时,Cron作业失败了。我使用login:admin作为cron。

请参阅我的app.yaml文件

app.yaml
application: my-app
version: 1
runtime: php55
api_version: 1

- url: /.*
  script: index.php
  login: required
- url: /backup_cron/remindermail
  static_dir: backup_cron/remindermail
  login: admin

我不想在我的index.php加载中使用no loginlogin: admin

我的应用程序只能看到所有使用Gmail登录的用户。在没有登录的情况下,cron作业运行良好。

在第一个加载页面中使用login:是否可能?

login:required

日志详细信息:

HTTP://1.1"302

请求失败,因为URL需要用户登录。对于调用的请求在应用程序引擎中(离线请求,如任务队列,或webhook,如XMPP和Incoming Mail(,URL必须需要管理员登录(或不需要登录(。

no loginlogin:admin

日志详细信息:

HTTP://1.1"200

成功

Crons无法访问受login: required保护的url,因为它们不是以用户身份运行的。来自文档:

注意:虽然cron作业可以使用login:admin限制的URL路径,但它们不能使用login:required限制的URL通路,因为cron计划任务不是以任何用户身份运行的。通过包含下面描述的X-Appengine-Cron标头,可以满足管理限制。

此处链接:https://cloud.google.com/appengine/docs/python/config/cron?hl=en#Python_app_yaml_Securing_URLs_for_cron

话虽如此,我建议你为所有受保护的工作使用一个特定的处理程序。或者你可以重定向未登录的用户。