Python App Engine后端为cron工作,但如果我直接点击url则不行

时间:2012-11-01 14:09:24

标签: python google-app-engine backend

我们有一个需要一些时间才能执行的脚本。我们安排了一个cron作业并使用后端来运行这项工作。

这是cron的样子:
url: /cron/my_job_name
target: mybackend
schedule: every 30 minutes from 06:00 to 12:00

cron作业按预期正确运行。但是当我点击网址时: https://myappname.googleplex.com/cron/my_job_name 当作业运行超过60秒时,我得到“DeadlineExceededError”。

我需要能够直接点击网址进行测试。我不想每次都改变cron时间表进行测试。

有没有办法通过点击网址来运行后端?

添加我的app.yaml和backends.yaml

的app.yaml
url: /cron/my_job_name
script: path/my_job_name.py
login: admin

backends.yaml
name: mybackend
class: B8
instances: 1
options: dynamic

1 个答案:

答案 0 :(得分:1)

听起来就像是在点击你的URL时,你实际上并没有调用后端实例来处理它。

来自docs

  

后端实例可以使用HTTP请求进行定位   http:// [instance]。[backend_name]。[your_app_id] .appspot.com,或者你的   应用程序的自定义域。如果您定位后端而没有定位   使用http:// [backend_name]的实例。[your_app_id] .appspot.com,App   引擎选择后端的第一个可用实例。

     

Backends API提供检索地址的函数   后端或实例。这允许应用程序版本定位   后端请求,后端定位另一个后端,或   用于后端的一个实例以定位另一个实例。这有效   在开发和生产环境中。

     

BACKEND_ID和INSTANCE_ID环境变量包含   处理请求的实例的后端名称和实例索引。

修改您的网址以包含您的后端名称(来自您backends.yaml),如果其他配置正确,您应该能够访问它。

有关同一主题的更多信息:

  

后端与app共享app.yaml中定义的处理程序   应用版本。您可以将后端放在单独的位置   应用程序根目录,如果你想避免共享代码或   处理程序,或只是使用login:admin。

标记相关的处理程序

如果您想要更深入的答案,如果您发布了backends.yaml,app.yaml和处理程序可能会有所帮助。