sae的定时执行任务

Cron

服务概述

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段,例如:

    name: crontest
    version: 1
    cron:
    - description: cron_test
      url: /cron/make
      schedule: "*/5 * * * *"
    

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

  • 删除Cron:

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

  • 语法字段含义

    • url

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

    • schedule

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

      # 每天00:05分执行
      "5 0 * * *"
      # 每月1号的14:15分执行
      "15 14 1 * *"
      # 每个工作日的晚上10点执行
      "0 22 * * 1-5"
      # 每分钟执行一次
      "*/1 * * * *"
      

      unix Crontab的语法形式如下:

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

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

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

    • description

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

    • timezone

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

    • login

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

    • times

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

注解

Cron使用HTTP GET方式请求URL

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值