星光

SAE配置Cron

id=50479273

纯粹搬运,因为最近要用到(斜眼笑),可以结合之前的关于Linux自动化的文章比照观看


 

服务概述

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

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

Cron的应用场景主要是让用户可以在指定的时间执行一些计划任务。

  • 每隔一定时间执行,如每隔2个小时执行1次。
  • 在某个特定时间点执行,如每周二晚上9:10执行。

Cron服务支持HTTP基础认证,用户可以设置用户名和密码来进行控制访问。

开发者可以在应用的配置文件 config.yaml 中来添加Cron。Cron的执行状态可在应用的管理界面 服务管理>Cron 中查看。

 


服务限制

 

 

  • Cron任务执行因为是以HTTP方式(GET),所以运行时间有上限,不得超过1800秒;如果用户有超过1800秒的任务需要定时触发,可以将其分解成多个Cron,或者将任务放入TaskQueue或者DeferredJob来异步的执行。
  • Cron任务执行存在一定的时间误差,最大不超过10秒。
  • Cron任务不分应用版本,只对默认版本生效,当切换代码默认版本时Cron会重新配置,切换成当前默认版本下的Cron配置。
  • 每个应用最多32条Cron任务。
  • Cron任务的间隔的最小时间衡量单元是分钟。
  • Cron支持设定时间区间,比如只在上午10点到下午5点间运行,或者只在1月24日至3月16日运行。
  • 多个Cron的URL不能完全相同,如果多个Cron中使用了相同的URL,后面的Cron会覆盖前面的Cron。开发者可以通过对URL添加一些无用的参数如”&cron=1”来对相同的URL加以区分。
  • 普通应用Cron的并发限制为12。同一时间最多只能有12个Cron任务执行,多出的任务将不能被执行。

 

如何配置

  • 添加Cron:

编辑config.yaml文件中,增加Cron段,例如:

 

上面的示例添加了一个Cron任务, 该任务每5分钟执行 http://crontest.sinaapp.com/cron/make 一次。

删除Cron:

删除config.yaml中对应的Cron描述段即可。

语法字段含义

  • url

Cron任务的url。例如 /relative/url/to/cron 。

  • schedule

任务描述,也就是何时执行这个Cron,支持unix crontab语法。例如:

unix Crontab的语法形式如下:

  • 如果某一项设置了多个参数,可以用“,”隔开,例如3,4,5,6这样。 如果是几个连续的数字构成的参数,可以用“-”把首尾相连,例如3-6。

    具体的语法规则可以参考man手册, man 5 crontab

  • description

    可选。任务的说明,默认为空。

  • timezone

    可选。默认为Beijing,目前支持:Beijing, NewYork, London, Sydney, Moscow, Berlin

  • login

    可选。HTTP基础认证设置,格式: 用户名@密码

  • times

    可选。设置cron最大执行的次数,默认没有次数限制。

 

如无特殊声明,欢迎转载,但是请注明来自星之所在《SAE配置Cron》

评论

  1. 正儿八经是小可 #1

    最近cron用的挺多的,所以感觉SAE越来越强大了,如果再出个代理功能我就可以抛弃VPS了233

    回复
    2015-06-10
    • Starlight

      不能文件IO硬伤(应该没记错)玩玩还行。。(云豆用完的我已经不想玩了

      回复
      2015-06-10
  2. 千寻神隐 #2

    图已收~

    回复
    2015-06-21