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 请求