Cron作业在Google Appengine

时间:2015-09-02 11:08:22

标签: php codeigniter google-app-engine cron

在Google App Engine中使用PHP框架时,当我使用带有login:required的index.php网址时,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:required

日志详情:

  

HTTP / 1.1" 302

     
    

请求失败,因为URL要求用户登录。对于调用的请求     在App Engine中(离线请求,如任务队列,或像webhooks)     XMPP和传入邮件),URL必须要求管理员登录(或否     登录)。

  

使用no login nd login:admin

记录详细信息:

  

HTTP / 1.1" 200

     

成功

1 个答案:

答案 0 :(得分:2)

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

  

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

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

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