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前端开发规范文档[转]
为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益的. 本文档由本人编写, 部分意见来源于网络, 以此感谢, ...
随机推荐
- Integer Intervals(贪心)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12123 Accepted: 5129 Description An i ...
- 怒刷BZOJ记录(一)1001~1037
我实在是太弱了...不滚粗只能刷BZOJ了...这里来记录每天刷了什么题吧. 2015-7-9 : 1001[BeiJing2006]狼抓兔子 | 最大流练习(呃..其 ...
- codevs3945 完美拓印
3945 完美拓印 codevs月赛 第一场 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 小Q获得了一个神奇的印章,这个印章宽n ...
- 《A First Course in Probability》-chaper5-连续型随机变量-均匀随机变量
在连续随机变量这部分,有一种特殊的随机变量X,对于X所有可能取值,P(X)都相等,我们称其为均匀随机变量. 基于均匀随机变量的定义,我们容易看到,其密度函数f(x)必然是一条平行于x轴的直线,因为这样 ...
- [转]sleep和wait的区别
http://www.cnblogs.com/plmnko/archive/2010/10/15/1851854.html from:http://nneverwei.javaeye.com/blog ...
- SRM 508(2-1000pt)
DIV2 1000pt 题意:给定整数n和r,求有多少个这样的数列,a1,a2...an,使得a1 + a2 +...+an = a1|a2|a3|...|an,(按位或).输出这样数列的个数mod ...
- HDU 1247
简单的字典树 - -,求一个单词是否由两个单词组成 #include<iostream> #include<cstring> #include<cstdio> us ...
- 【OSGi】OSGi生命周期
1 生命周期管理 对于非模块化应用,生命周期将应用作为一个整体来操作: 而对于模块化应用,则可以以细粒度的方式来管理应用的某一个独立部分. OSGi生命周期管理 OSGi生命周期层有两种不同的作用: ...
- bootstrap 仿实例
bootstrap实现一个网页 html文件 <!DOCTYPE html> <html> <head lang="en"> <meta ...
- 初次了解CSS3
什么是CSS,什么是CSS3? 非常简单,CSS代表"Casading Style Sheets",就是样式表,是一种替代并为网站添加样式的标记性语言.现在所使用的CSS基本是在1 ...