Google app engine 谷歌应用程序引擎中的cron作业不工作
我在flask上建立了基本的Python3教程网站,我能够进行设置,网站运行得很好 此外,我还想运行一个python脚本,该脚本每天运行以收集一些数据,但是cron作业根本不起作用。我还添加了login:admin以限制任何人直接使用该url cron.yamlGoogle app engine 谷歌应用程序引擎中的cron作业不工作,google-app-engine,google-cloud-platform,app.yaml,Google App Engine,Google Cloud Platform,App.yaml,我在flask上建立了基本的Python3教程网站,我能够进行设置,网站运行得很好 此外,我还想运行一个python脚本,该脚本每天运行以收集一些数据,但是cron作业根本不起作用。我还添加了login:admin以限制任何人直接使用该url cron.yaml cron: - description: test dispatch vs target url: /cronapp schedule: every 5 hours runtime: python env: flex entr
cron:
- description: test dispatch vs target
url: /cronapp
schedule: every 5 hours
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 3
handlers:
- url: /cronapp
script: cronapp.py
login: admin
应用程序yaml
cron:
- description: test dispatch vs target
url: /cronapp
schedule: every 5 hours
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 3
handlers:
- url: /cronapp
script: cronapp.py
login: admin
我打电话给它,因为它也不工作,返回404。
我做错了什么?非常感谢您的帮助您的app.yaml文件正在将标准环境元素混合到一个文件中,因此它可能会被忽略。您可能可以在开发人员控制台的应用程序日志中看到cron请求(不过可能有错误) 您需要在应用程序代码中添加
/cronapp
的处理程序,而不是在app.yaml
中。不完全确定您是如何做到这一点的(我仍然只使用标准环境),这取决于您的应用程序和/或其框架。以烧瓶为例,请查看
更新:
我可能不完全正确,我的答案是基于文档的,但我注意到了一些不一致之处(我向谷歌发送了一些文档反馈)
灵活的环境(看起来主要是复制自)提到了两种解决方案:
- 一个确实基于
处理程序的
选项:登录:admin
login:admin
来限制URL
app.yaml
中的配置部分。有关更多信息,请参阅
但是中没有提到处理程序
,并且指向不存在的标记。所以我不确定这是否真的有效
- 第二个基于
头(与标准环境中相同):X-Appengine-Cron
X-Appengine-Cron: true
X-Appengine-Cron
头由Google App Engine在内部设置。
如果您的请求处理程序找到此标头,它可以相信
请求是一个cron请求。如果标题存在于外部文件中
用户对应用程序的请求将被剥离,来自的请求除外
已登录应用程序的管理员,允许他们设置
标题用于测试目的
但其中提到:
此外,一些选定的标题与以下模式匹配
已从请求中删除:
X-Appengine-*
X-Appengine-Cron
。值得一试。这是我签入的(基于标准env、webapp2的)cron处理程序代码:
if self.request.headers.get('X-AppEngine-Cron') is None:
self.abort(403) # HTTPForbidden
谢谢你,丹。如果我将处理程序直接放在应用程序中,Cron可以正常工作。但我不想让外界称之为URL。这应该只能通过cron访问。关于如何限制这一点有什么想法吗?谢谢Dan的详细回复。正如您所说,我在标题中使用了X-app engine cron进行了测试,但在灵活的环境中,它似乎没有随标题一起发送。我将向谷歌开出一张罚单。我不确定现在发生了什么。但一个新项目的新部署似乎与X-AppEngine-Cron解决方案一起工作。再次感谢你的帮助。