首页 » 编程开发 » Python » 正文

pyweb在sae平台下如何自动定时多个同地址任务Cron详细教程

新浪SAE环境下使用Cron建立定时任务定时执行脚本是非常方便的,但是官方SAE功能说明下并没有python如何设置的详细说明,今天为大家介绍下。

Cron服务是SAE为开发者提供的分布式计划任务服务,用来定时触发开发者的特定动作,满足比如定时计算排行榜等需求。

Cron的执行是以HTTP方式触发的,触发后真正执行的是用户在应用的HTTP的回调函数。Cron服务是分布式环境部署的,具有高可靠性,多点之间相互隔离且同时触发,并且通过分布式锁进行选举并最终由一个健康节点执行。

Cron的一般配置

Cron任务的新建添加删除及管理都是在config.yaml配置文件下自由配置的,格式如下:

cron:
– description:autorun
url:autorun?cron=1&runtype=1
schedule:2 0 * * *

在配置的时候需要注意,要严格按照上面的格式来,严格的缩进,中间要是多个符号或者少个符号,就够你折腾半天的。
“cron:”主要是申明使用cron功能;
“description”是任务名称,可以随便填写;
“url”就是任务路径,由于新浪SAE的cron功能主要是通过http的方式触发,触发后真正执行的是用户在应用的HTTP的回调函数。
“schedule”就是计划时间,任务的执行时间,一般可以设置成两种方式:1、间隔多长时间执行一次;2、每天定时执行一次。这个例子里面设置的执行时间是每天凌晨过2分执行一次任务。
时间说明如下:

* * * * *
– – – – –
| | | | |
| | | | +—– day of week (0 – 6) (Sunday=0)
| | | +——- month (1 – 12)
| | +——— day of month (1 – 31)
| +———– hour (0 – 23)
+————- min (0 – 59)

schedule后面共5个*号,每个代表的意义从上面的图中应该很容易看出来,我就不多说了。

Cron同地址多个任务设置

由于Cron规定同一个地址不能新建多个任务,所以如果你这样做了,那么SAE会用你的第二个Cron任务将第一个Cron任务覆盖掉。但有时候我们确实有同一个地址建多个任务的需要,比如有个脚本我需要凌晨的时候跑一次,然后晚上接近24点的时候再跑一次,怎么办呢?我们一般利用向地址中添加参数的形式绕过这个限制。如在地址后面加上“&cron=1”的方式。详细见下面的例子:

cron:
– description:autorun
url:autorun?cron=1&runtype=1
schedule:2 0 * * *

– description:autorun2
url:autorun?cron=2&runtype=1
schedule:55 23 * * *

上面例子中,我就用同一个地址建了两个任务。
最后需要注意的一点是,新浪SAE的普通Cron限制最多并发10个cron任务,也就是说,同一时间内,最多只能有10个cron任务执行。

发表评论