gpt4 book ai didi

google-app-engine - 谷歌应用引擎中的 cron 作业无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:00 24 4
gpt4 key购买 nike

我从这个 google cloud tutorial 获取了 flask 上的基本 python 3 教程网站我能够进行设置并且网站运行良好。

此外,我还想运行一个每天运行的 python 脚本来收集一些数据,但 cron 作业不起作用。我还添加了 login: admin 以限制任何人直接使用该 url

cron.yaml

cron:
- description: test dispatch vs target
url: /cronapp
schedule: every 5 hours

app.yaml

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
python_version: 3

handlers:
- url: /cronapp
script: cronapp.py
login: admin

我将其称为 http://myproject.appspot.com/cronapp也不起作用并返回 404。我究竟做错了什么 ?感谢任何帮助

最佳答案

您的 app.yaml 文件混淆了标准环境 Handlers元素变成 flexible environment configuration ,所以它可能被忽略了。您可能会在开发者控制台的应用日志中看到 cron 请求(不过可能有错误)。

您需要为 /cronapp 添加处理程序 在您的应用程序 代码中,而不是在 app.yaml 中。不完全确定你是怎么做到的(我仍然只使用标准环境),这取决于你的应用程序和/或其框架。看看 Hello World code review以 flask 为例。

更新:

我可能不完全正确,我的回答基于文档,但我只是注意到一些不一致之处(我为此向 Google 发送了一些文档反馈)。

柔性环境Securing URLs for cron (看起来主要是从 the standard environment equivalent 复制的)提到了几个解决方案:

  • 一个确实基于 handlerlogin:admin 选项:

You can restrict a URL by adding login: admin to the handler configuration section in app.yaml. For more information see Securing URLs

但是Configuring your App with app.yaml中没有提到handlerSecuring URLs指向一个不存在的标签。所以我不确定这是否真的有效。

  • 第二个基于X-Appengine-Cron header (与标准环境相同):

Requests from the Cron Service will also contain a HTTP header:

X-Appengine-Cron: true

The X-Appengine-Cron header is set internally by Google App Engine. If your request handler finds this header it can trust that the request is a cron request. If the header is present in an external user request to your app, it is stripped, except for requests from logged in administrators of the application, who are allowed to set the header for testing purposes.

但是在Removed headers据说:

In addition, some selected headers that match the following pattern are removed from the request:

  • X-Appengine-*

尚不清楚这是否扩展到 X-Appengine-Cron。值得一试。这是我在(标准环境,基于 webapp2 的)cron 处理程序代码中的检查:

    if self.request.headers.get('X-AppEngine-Cron') is None:
self.abort(403) # HTTPForbidden

关于google-app-engine - 谷歌应用引擎中的 cron 作业无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com