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前端开发规范文档[转]
为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益的. 本文档由本人编写, 部分意见来源于网络, 以此感谢, ...
随机推荐
- mysql 安装1
Linux 安装mysql.tar.gz包(2012-09-28 19:25:06) 标签: it 分类: linux学习编 我用的mysql的版本的是:mysql--linux-i686-icc-g ...
- VS2010中编写宏添加作者信息与函数注释
这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...
- Gold Balanced Lineup(哈希表)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10711 Accepted: 3182 Description Farm ...
- HDU 5416 CRB and Tree
题目大意: T, T组测试数据 给你一个n有n个点,下标是从 1 开始的.这个是一棵树,然后下面是n-1条边, 每条边的信息是 s,e,w 代表 s-e的权值是w 然后是一个Q代表Q次询问. 每次询问 ...
- hdu 3062 2-sat入门题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 #include <cstdio> #include <cmath> # ...
- hadoop 2.0 详细配置教程(转载)
转载: http://www.cnblogs.com/scotoma/archive/2012/09/18/2689902.html 作者:杨鑫奇 PS:文章有部分参考资料来自网上,并经过实践后写出, ...
- Swift3.0 更新后出现比较运算符方法
在将项目更新到swift3.0之后,在一些controller头部会出现 比较运算符的方法 // FIXME: comparison operators with optionals were rem ...
- Linux Epoll介绍和程序实例
Linux Epoll介绍和程序实例 1. Epoll是何方神圣? Epoll但是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select类似, ...
- [AngularJS] Use ng-model-options to limit $digest
Refer: http://toddmotto.com/super-fast-angular-ng-model-options-limit-digest-cycles/ Use: <input ...
- UML中的图
用例图.类图.包图.顺序图.协作图.状态图.活动图.构件图.部署图等 1.用例图 显示多个外部参与者以及他们与系统提供的用例之间的连接.用例是系统中的一个可以描述参与者与系统之间交互作用功能单元.用例 ...