没有在Google App Engine中安排的Cron作业

时间:2018-02-07 14:24:23

标签: google-app-engine google-cloud-platform

我想在GAE中创建一个cron作业,但我不希望它被安排。 我想在需要的时候手动调用它。

我应该在schedule元素中添加什么内容?

3 个答案:

答案 0 :(得分:4)

来自Scheduling Tasks With Cron for Python

  

cron作业按计划对URL发出HTTP GET请求。该   该URL的处理程序在调用时执行逻辑。

所以,正如@snakecharmerb所提到的,你必须创建那个处理程序,做你想要的cron作业,并将它映射到所需的cron url。

为了避免计划,您只需不上传cron配置,而是手动触发作业,方法是调度程序可以执行相同的GET请求,例如使用curl

curl https://your_app.appspot.com/cron_handler_url

答案 1 :(得分:1)

在阅读之前,虽然它确实有效,但这有点令人讨厌。

我需要类似的东西,主要是因为需要稍长的处理时间而不是60秒。

在我指定的cron.yaml中:

- description: My example cron
  url: /cron/my/example/cron
  schedule: 25 of dec 12:00

然后在我的处理程序中,我检查日期是否是12月25日并放弃请求。

这似乎是拥有'手动'cron的唯一方法。

在Python中,查看日期很简单。

from datetime import datetime
import logging
now = datetime.utcnow()
if now.day == 25 and now.month == 12:
    logging.info("Skipping as it's the 25th December")
    return

答案 2 :(得分:0)

您也可以做类似的事情

schedule: every 99999 hours

那样,差不多11年了,所以您知道直到那时cron才被触发。