我们有一个需要一些时间才能执行的脚本。我们安排了一个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
答案 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和处理程序可能会有所帮助。