如何在Flexible GAE中运行cron作业

时间:2017-10-03 15:35:21

标签: google-app-engine cron app-engine-flexible google-iap

我正在开发我的第一个应用。我选择使用与DataTables交互的Flexible Python环境。我有应用程序工作,它使用Identity-Aware代理保护,以限制对我们公司域的访问。

我现在正在尝试部署一个cron作业来定期清理旧实体以保持数据集大小不变。我有清理任务工作,可以手动运行它。但是,在尝试让它自动运行时,我不断在日志中收到以下错误:

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

根据我在文档中看到的内容,Flex环境不再使用app.yaml文件的处理程序部分,应用程序应该处理cron服务本身的验证。但是这个错误似乎表明该脚本甚至没有被运行。

我尝试过以下操作,结果是每次上面的错误消息: 1.关闭IAP并且对访问没有限制 2.将处理程序部分添加到app.yaml文件中以进行/ clean作业

有没有人遇到这个问题并让它发挥作用?

的app.yaml:

service: dashboard
env: flex
runtime: python
entrypoint: gunicorn -b :$PORT dashboard:app --timeout 300
api_version: 1
threadsafe: false
skip_files: 
- ^(.*/)?\.pyc$

runtime_config:
  python_version: 2

cron.yaml:

cron:
- description: remove old cluster heartbeats
  url: /clean?
  schedule: every 24 hours
  target: dashboard

1 个答案:

答案 0 :(得分:0)

我终于有了这个工作。但我不确定究竟是什么让它起作用。我没有更改我的app.yaml,cron.yaml或应用程序代码。

但是,我确实在这个项目中创建了另一个基本的“Hello World”服务,看看我是否可以使它工作。一旦我开始工作,我就回去尝试我原来的仪表板服务,它现在正在运行。无论出现什么问题,都可以解决新的服务部署问题。