sae crop 文档
原文是google缓存:
http://webcache.googleusercontent.com/search?q=cache:MD_FP-G6RI8J:sae.sina.com.cn/%3Fm%3Ddevcenter%26catId%3D26%26content_id%3D70+&cd=2&hl=zh-CN&ct=clnk&gl=cn
服务概要
Cron服务是SAE为开发者提供的分布式定时服务,用来定时触发开发者的特定动作,满足比如定时计算排行榜等需求。Cron的设置是通过App的config.yaml来实现的,只要用户在App目录下的config.yaml里按照我们的提供的语法格式进行配置,部署后就能生效。Cron的执行是以HTTP方式触发的,触发后真正执行的是用户在App中的PHP代码。Cron服务是分布式环境部署的,具有高可靠性,多点之间相互隔离且同时触发,并且通过分布式锁进行选举并最终由一个健康节点执行。
特别注意:
- Cron的任务执行因为是以HTTP方式(GET),所以运行时间有上限,不得超过300秒;如果用户有超过300秒的任务需要定时触发,可以将其分解成多个cron,或者将任务放入TaskQueue或者DeferredJob来异步的执行。
- Cron的任务执行存在一定的时间误差,最大不超过10秒。
- Cron不分App版本,只对默认版本生效,当切换代码默认版本时cron会重新配置,切换成当前默认版本下的cron配置。
- 每个App最多32条cron。
- Cron任务的间隔的最小时间衡量单元是分钟。
- Cron任务里有两类:每隔一段时间执行和特定时间执行;其中每隔一段时间执行的任务又分为随机偏移执行的任务和指定偏移执行的任务,这两种任务对SAE平台的消耗不一样,所以指定偏移的Cron-offset的资源消耗费用要比随机偏移的Cron-nooffset的资源消耗费用高。
- Cron支持设定时间区间,比如只在上午10点到下午5点间运行,或者只在1月24日至3月16日运行。
- 多个cron的url不能完全相同,如果多个cron中使用了相同的url,后面的cron会覆盖前面的cron。一般添加无用的参数如"&cron=1"对相同的url加以区分可以避免覆盖。
- 普通应用cron的并发限制为10。同一时间最多只能有10个cron任务执行,多出的任务将不能被执行。
应用场景
Cron服务主要提供两类的定时需求:
A、每隔一定时间执行,如每隔2个小时执行1次。
B、在某个特定时间点执行,如每周二晚上9:10执行。
针对A应用场景,Cron提供偏移offset功能,也就是用户可以显式指定偏移时间,否则,默认针对间隔时间做随机偏移。
Cron服务支持http basic auth,用户可以设置用户名和密码来控制访问。
服务限制与配额
SAE设置服务限制和配额的目的是为了防止个别用户攻击和滥用,从而在公有云计算平台上保证绝大多数开发者的正常使用.
1、服务限制和配额设定是在门户网站新浪自身长期运维的基础上经过严格计算得出的,所以正常使用一般不会出现问题。经过SAE 实际统计,99%的应用不会受到任何影响
2、当您发现您的某项服务超过限制或者超配时,请先阅读相关文档确认限制和配额的具体数值,再检查自己的程序是否存在使用不 当的情况,如果仍然解决不了,可以和SAE官方联系,saemail@sina.cn
服务限制
单App最大条目 |
32 |
单次最大执行时长 |
300秒 |
分钟配额
服务 |
请求数 |
cpu时间 |
流入带宽 |
流出带宽 |
Cron/offset |
50 |
50s |
1MB |
1MB |
Cron/nooffset |
200 |
60s |
5MB |
5MB |
备注和说明
限制
Cron的任务执行存在一定的时间误差,最大不超过10秒。
每个App最多32条cron
Cron任务的间隔的最小时间衡量单元是分钟
cron syatax
(descripted by EBNF, started by conf)
USERNAME = [a-zA-Z0-9]+
PASSWORD = [a-zA-Z0-9]+
INT = 0|([1-9]+[0-9]*)
STRING = [^\n]*
ORDINAL = $INT
MON = 'Monday' | 'monday' | 'Mon' | 'MON'
TUE = 'Tuesday' | 'tuesday' | 'Tue' | 'TUE'
WED = 'Wednesday' | 'wednesday' | 'Wed' | 'WED'
THU = 'Thursday' | 'thursday' | 'Thu' | 'THU'
FRI = 'Friday' | 'friday' | 'Fri' | 'FRI'
SAT = 'Saturday' | 'saturday' | 'Sat' | 'SAT'
SUN = 'Sunday' | 'sunday' | 'Sun' | 'SUN'
DAYS = MON | TUE | WED | THU | FRI | SAT | SUN | 'day' | 'days'
JAN = 'January' | 'january' | 'Jan' | 'JAN'
FEB = 'February' | 'february' | 'Feb' | 'FEB'
MAR = 'March' | 'march' | 'Mar' | 'MAR'
APR = 'April' | 'april' | 'Apr' | 'APR'
MAY = 'May' | 'may' | 'MAY'
JUN = 'June' | 'june' | 'Jun' | 'JUN'
JUL = 'July' | 'july' | 'Jul' | 'JUL'
AUG = 'August' | 'argust' | 'Aug' | 'AUG'
SEP = 'September' | 'september' | 'Sep' | 'SEP'
OCT = 'October' | 'october' | 'Oct' | 'OCT'
NOV = 'November' | 'november' | 'Nov' | 'NOV'
DEC = 'Decemer' | 'december' | 'Dec' | 'DEC'
MONTHS = JAN | FEB | MAR | APR | MAY |JUN | JUL | AUG | SEP | OCT | NOV | DEC | 'month'
MIN = 'min' | 'mins' | 'minute' | 'minutes'
HOUR = 'hour' | 'hours'
DAYPOINT = [1970-2038].[1-12].[1-31]
TIME = [0-23]:[0-59]
DATETIME = [0-9]{12}
timezone_expreesion = 'Beijing' | 'NewYork' | 'London' | 'Sydney' | 'Moscow' | 'Berlin'
| 'Tokyo' | 'LosAngeles' | 'BJ' | 'NY' | 'LON' | 'SYD' | 'MOS' | 'LA'
timer_expression=
'every' INT MIN (
(, 'from' DAYPOINT TIME) ('to' DAYPOINT TIME)? | (, 'from' [DAYPOINT | TIME]) ('to' [DAYPOINT | TIME])? )| every' INT HOUR (,'offset' INT MIN)? ( (,'from' DAYPOINT TIME) ('to' DAYPOINT TIME)? | (, 'from' [DAYPOINT | TIME]) ('to' [DAYPOINT | TIME])? )|['every' | ORDINAL] DAYS 'of' MONTHS TIME ( (,'from' DAYPOINT TIME) ('to' DAYPOINT TIME)? | (,'from' DAYPOINT ) ('to' DAYPOINT)?
|
crontab unix syntax
item=
'-'
(description: STRING)?
url: URL
schedule: timer_expression
(timezone: timezone_expression)?
(login: USERNAME@PASSWORD)?
(times: INT)?
conf = item{1,32}
crontab unix syntax
cron_unix的语法形式如下:
第三方工具
第三方开发的生成Cron的小工具 http://saetools.sinaapp.com/cron.html
PHP调用方式
使用指南
例子:
Cron最新支持unix的crontab语法,可以同时在分钟、小时、天、月和星期位置上进行各种组合设置,时间设置的精度为分钟,方便习 惯于写crontab的系统管理员使用。
增加Cron
编辑saetest/1/config.yaml,增加cron段,config.yaml示例如下:
删除cron
编辑saetest/1/config.yaml,删除某个cron段,config.yaml示例如下:
config.yaml示例如下:
语法字段含义
Cron SAE语法例子
Java调用方式
以应用名为javatest版本号为1的应用使用cron为例,只需将config.yaml文件加入应用对应版本的SVN路径下javatest/1/config.yaml(和war包路径相同),之后svn commit即可。需要注意的是,cron服务只对应用的默认版本有效。
Python调用方式
Cron的配置文件为 config.yaml ,Cron的执行状态可在应用的管理界面 服务管理>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语法。例如:
# 每天00:05分执行
"5 0 * * *"
# 每月1号的14:15分执行
"15 14 1 * *"
# 每个工作日的晚上10点执行
"0 22 * * 1-5"
# 每分钟执行一次
"*/1 * * * *"
具体的语法规则可以参考man手册, man 5 crontab 。
·description
可选。任务的说明,默认为空。
·timezone
可选。默认为Beijing,目前支持:Beijing, NewYork, London, Sydney, Moscow, Berlin
·login
可选。http basic auth设置,格式: 用户名@密码
·times
可选。设置cron最大执行的次数,默认没有次数限制。
Note:
Cron使用GET方式请求URL。
Cron完整示例
每五分钟请求一次/backend/cron/update URL
Flask URL 处理程序:
importpylibmc
importdatetime
fromappstackimportapp
mc=pylibmc.Client(['localhost'])
@app.route('/backend/cron/update',methods=['GET','POST'])
defupdate():
update_time =mc.get('update_time')
mc.set("update_time",str(datetime.datetime.now()))
returnupdate_time
config.yaml:
sae crop 文档的更多相关文章
- 新浪sae对storage的文档进行读写操作
有的人喜欢将一些数据写在服务器的文件里面,并不喜欢存在mysql里,但新浪sae却不支持对本地文件进行操作. 不过sae拓展了一个storage的服务,可以将一些静态文件放在上面.本文不介绍文件的上传 ...
- Web前端开发规范文档(google规范)
(Xee:其实没什么规范约束,但是养成一种好习惯,何乐而不为?) 区分大小写 xhtml 区分大小写,xhtml要求 标签名 属性名 值都要小写,并且要有双引号和 标签闭合. css 元素名称以及i ...
- Web前端开发规范文档你需要知道的事--HTML、css、js、文档等需要规范内容
规范目的 为提高团队协作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,特制订此文档.本规范文档一经确认,前端开发人员必须按本文档规范进行前台页面开发.本文档如有不对或者不 ...
- graphicsMagick 文档
ImageMagick资料 ---------------------------------------------------------------------------- ImageMagi ...
- WEB前端开发规范文档(转)
http://codeguide.bootcss.com/ 编写灵活.稳定.高质量的 HTML 和 CSS 代码的规范上面的文档 再结合下面的规范: 无论是从技术角度还是开发视角,对于web前端开发 ...
- 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- Plupload上传插件中文帮助文档
Plupload上传插件中文帮助文档 配置参数 实例化一个plupload对象时,也就是 new plupload.Uploader(),需要传入一个对象作为配置参数.后面内容中出现的plupload ...
- WEB前端开发规范文档[转]
为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益的. 本文档由本人编写, 部分意见来源于网络, 以此感谢, ...
随机推荐
- 【HDOJ】1987 Decoding
简单搜索. /* hdoj 1987 */ #include <iostream> #include <cstdio> #include <cstring> #in ...
- AlgorithmsI Exercises: UnionFind
Question1 Give the id[] array that results from the following sequence of 6 unionoperations on a set ...
- COJ 3007 Mr.Yang的小助手
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=1037 试题描述: 信息学社团已经逐渐发展壮大,成员也越来越多.现在,有n个 ...
- 【转】Java 枚举7常见种用法
原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu 原创地址:http://blog.li ...
- 在使用Math.random()生成6位随机数遇到的问题,并成功得到6位随机数
最近在做卫生局的一个考务网时需要实现一个短信发送验证码的功能,因此就必须使用到随机生成6位验证码的功能,开始觉的简单的,随便写了个 +); String messageCode = String.va ...
- cookie操作大全
JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...
- java 编辑报错 非法字符: \ufeff 解决方案
用Notepad ++ 调成utf-8 格式 bom 或无bom根据情况 新建类 把代码一句句粘进去 ok
- XPath与Xquery
XPath 和 XQuery 在某些方面很相似.XPath 还是 XQuery 完整不可分割的一部分.这两种语言都能够从 XML 文档或者 XML 文档存储库中选择数据.本文简要介绍了 XPath 和 ...
- 30余套系统模版|DIV+CSS网页模板|简洁大气系统模板
30余套系统模版|DIV+CSS网页模板|简洁大气系统模板.都是一些后台系统的模版,很适合开发一些管理系统,办公系统,网站后台系统等.使用很广泛,很实用的系统模版. 下载地址: 点击下载
- 关于URL重写
1. 为什么要使用url重写? 先从session的原理讲起,为什么我们能够获得session中的东西呢?如果没有禁用cookie的话,那么session创建之后,会将session id的值通过r ...