AppEngine cron (python) 中的每一天、每周、每月、每年

Posted

技术标签:

【中文标题】AppEngine cron (python) 中的每一天、每周、每月、每年【英文标题】:Every day,week,month,year in AppEngine cron (python) 【发布时间】:2011-05-30 02:44:31 【问题描述】:

我正在尝试将 appengine 任务设置为在每天、每周、每月和每年的午夜重复,以清除游戏的高分列表。

我的 cron.yaml 看起来像这样:

- description: daily clear
  url: /delete?off=10
  schedule: every day 00:00
- description: weekly clear
  url: /delete?off=20
  schedule: every monday 00:00
- description: monthly clear
  url: /delete?off=30
  schedule: every month 00:00
- description: yearly clear
  url: /delete?off=40
  schedule: every year 00:00

每天和每周的工作都可以,但我不知道如何让工作每月和每年重复一次。这是the schedule format。

对于每个月的工作,我都尝试过“每个月”、“每月 1 日”等表达方式,但没有任何效果。这种类型的计划是否可以在 cron 作业中使用?

或者我是否需要只在每天 00:00 调用清算页面,并在页面中执行此逻辑并测试当前日期(如果它是周/月/年的开始)?

【问题讨论】:

如果它每天重复,它也会每周、每月、每季度和每年重复。它还会重复每个满月。在“星期日”或每月 1 日进行日常工作检查有什么问题? 每周只出现一次。在星期日运行的每周作业每周重复。 谢谢,抱歉。每周从星期一开始。 +1 不错。为我节省了很多时间来挖掘文档 【参考方案1】:

您链接的文档提供了有关如何实现您想要的所有结果的示例。

# Daily:
every day 00:00

# Weekly:
every monday 00:00

# Monthly:
1 of month 00:00

# Yearly:
1 of jan 00:00

【讨论】:

@Robert 嗯,你确定吗?我不认为“1 of month”是一个有效的语法。 @systempuntoout 是的,我确定 '1 of month' 是有效的。它指定作业应在“1 月 1 日”、“2 月 1 日”、...、“12 月 1 日”等运行。文档也使用该语法,但通常在诸如“每月 1,15”之类的列表中。 @Robert ("every"|ordinal) (days) ["of" (monthspec)] (time),看起来它需要一个序数 @systempuntoout 从下面大约四行复制的地方:'monthspec [...] 你也可以说“月”来表示每个月,如“1,8,15,22 of月 09:00"。' @Robert 你是对的 :),它在规范中报告;这很奇怪,因为它不遵循上面指定的 ("every"|ordinal) 语法。【参考方案2】:

我会选择这样的:

- description: daily clear
  url: /delete/daily
  schedule: every day 00:00
- description: weekly clear
  url: /delete/weekly
  schedule: every monday 00:00
- description: monthly clear
  url: /delete/monthly
  schedule: first of month 00:00
- description: yearly clear
  url: /delete/yearly
  schedule: first of jan 00:00

AFAIK 你不能在yaml 中使用像/delete?off=30 这样的语法,但你需要为每个不同的清除明确定义一个路由,例如/delete/weekly

【讨论】:

这不起作用。使用first of month 00:00 会产生错误Unable to assign value 'first of month 00:00' to attribute 'schedule',但使用1 of month 可以正常工作。

以上是关于AppEngine cron (python) 中的每一天、每周、每月、每年的主要内容,如果未能解决你的问题,请参考以下文章

在 Google App Engine 中使用 Cron 作业

使用 POST 的 Google App Engine Cron 请求

AppEngine数据存储 - 以编程方式备份

60 年代的最后期限如何应用于 appengine .run 和 .fetch 检索?

使用空闲实例和待处理延迟设置调整 AppEngine 性能

使用 node.js 标准环境在 AppEngine 上找不到模块 @google-cloud/firestore