http://developer.baidu.com/wiki/index.php?title=docs/cplat/rt/python/cronphp
Cron(定时任务)是云环境为开发者提供的分布式环境下的定时任务功能,能够经过指定一个URL、时间表和相关参数来建立一个任务,系统将按照时间表的规则调用用户指定的URL。python
在百度开发者中心 登陆后 进入“管理中心”,选择“管理”已托管在BAE上的应用,在“云环境(BAE)->服务管理->Cron(定时任务)”便可看到Cron服务的管理页面。建立定时任务并输入相关参数后便可在代码中直接调用,以下图:api
图:Cron管理浏览器
1. URL:缓存
用户要执行的任务的地址。例如http://cron.duapp.com安全
2. 执行方法:服务器
get 前面指定的URL 将被以get方式执行。 post 前面指定的URL 将被以post方式执行。app
3. 相关参数:curl
只有在执行方法为post时有意义。并以post方式执行所携带的参数做为相关参数。例如 name=li&age=23&sex=f分布式
4. 执行次数:
任务计划被执行的次数,若是输入0表示任务将永远被执行。
5. 时间表:
时间表用来定义任务执行的时间规则。符合Linux CronTab
* * * * * - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) f1 f2 f3 f4 f5 program *其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。 *当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其他类推 *当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其他类推 *当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其他类推 *当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其他类推 *week和day都有,则取交集。 例如:30 9 * * * 表示天天早上9点30分执行
参考网站 http://www.adminschoice.com/crontab-quick-reference
6. 回调URL:
每次任务被执行后,cron系统将以post请求方式回调该URL。用户能够在该URL的服务中得到2个参数,URL和reason。URL 指建立任务时的URL。reason 表示执行是否成功,有3种值:3成功,4失败,5超时。
目前,Cron服务存在如下限制:
限制项 | 值 |
---|---|
单个开发者最大cron数 | 20 |
任务名称 | 名称不能为空,只能包含半角英文字母和数字,最大长度不能超过128个字符。且同一个用户所建立的Cron不能有同名 |
https://developers.google.com/appengine/docs/python/config/cron?hl=zh-cn
经过使用 App Engine Cron 服务,您能够配置在指定时间或按固定间隔执行的按期计划任务。这些任务一般称为 Cron 做业。这些 Cron 做业是由 App Engine Cron 服务自动触发的。例如,您能够天天使用该服务发送报告电子邮件,每 10 分钟更新一些缓存数据,或者每小时更新一些摘要信息。
Cron 做业将在一天中的给定时间使用 HTTP GET 请求调用网址。Cron 调用的网址具备与普通 HTTP 请求相同的限制和配额,包括请求时间限制。仅为默认应用程序版本运行 Cron 做业。
应用程序最多能够有 20 个计划任务。
cron.yaml
文件位于应用程序的根目录(与 app.yaml
在一块儿),用于配置 Python 应用程序的计划任务。如下是 cron.yaml
的示例文件:
cron: - description: daily summary job url: /tasks/summary schedule: every 24 hours - description: monday morning mailout url: /mail/weekly schedule: every monday 09:00 timezone: Australia/NSW
cron.yaml
的语法为 YAML 格式。有关该语法的详细信息,请参阅 YAML 网站。
cron.yaml
文件由若干做业定义组成。做业定义必须具备 url
和 schedule
。您也能够视须要指定 description
和 timezone
。此说明将在管理控制台和开发服务器的管理界面中提供。
url
字段指定应用程序中将由 Cron 服务调用的网址。有关详细信息,请参阅保护 Cron 网址的安全。计划字段的格式在计划格式中有更详细的介绍。
时区名称应为标准 zoneinfo 时区名称。若是未指定时区,计划将使用通用协调时间(UTC,也称为格林威治标准时间 GMT)。
Cron 计划是使用相似英语的简单格式指定的。
下面是一些计划示例:
every 5 minutes every 12 hours 2nd,third mon,wed,thu of march 17:00 every monday 09:00 1st monday of sep,oct,nov 17:00 every day 00:00
若是不须要在特定时间运行重复性做业,而是只需按固定间隔运行这些做业,请使用如下形式:every N (hours|mins|minutes)
,其中 N 是一个数字,hours 或 minutes 指定时间单位。能够将运行任务的最短间隔指定为 1 分钟。
默认状况下,间隔计划从完成上一做业后的下一间隔开始。若是但愿天天按固定间隔启动做业而与完成上一做业的时间无关,请在间隔描述中添加单词 synchronized
。例如:
every 2 hours synchronized
这会天天按 2 小时的间隔运行 12 次做业,从午夜开始。
若是要指定更具体的时间,您能够按如下方式指定计划:
("every"|ordinal) (days) ["of" (monthspec)] (time)
括号仅用于说明目的,引号表示字面值。
其中:
cron 处理程序只是一个在 app.yaml
中定义的普通处理程序。您能够经过将访问权限限制为仅限管理员账户来防止用户访问计划任务使用的网址。计划任务能够访问仅限管理员的网址。您能够经过在 app.yaml
中将 login: admin
添加处处理程序配置来限制网址。
app.yaml
中的一个示例可能以下所示:
application: hello-cron version: 1 runtime: python api_version: 1 handlers: - url: /report/weekly script: reports.py login: admin
注意:尽管 cron 做业可使用以 login: admin
加以限制的网址路径,但不能使用以 login: required
加以限制的网址路径。
有关详细信息,请参阅 Python 应用程序配置:须要登陆或管理员身份。
要测试 cron 做业,请以管理员身份登陆,并在浏览器中访问处理程序的网址。
来自 Cron 服务的请求也将包含 HTTP 标头:
X-AppEngine-Cron: true
若是但愿确保仅 cron 请求可以触发处理程序,您应该检查该标头。
Cron 请求始终发送到默认应用程序版本。
您可使用 appcfg.py
上传 cron 做业和查看关于定义的 cron 做业的信息。当您使用 appcfg.py update
将应用程序上传到 App Engine 时,Cron 服务将根据 cron.yaml
的内容进行更新。您可使用 appcfg.py update_cron
只更新 cron 配置,而无需上传应用程序的其他部分。
要删除全部 cron 做业,请将 cron.yaml
文件更改成只包含如下内容:
cron:
您可使用 appcfg.py cron_info
命令显示 cron 做业的解析版本,包括做业将运行的次数。
若是但愿 appcfg.py cron_info
正确处理您指定的时区,请安装 pytz 包。
经过使用管理控制台,您能够查看 Cron 做业的状态。请从侧面菜单中选择“Cron 做业”连接以查看做业状态,包括上次运行做业的时间以及做业结果。
也能够从管理控制台菜单中选择“管理日志”页以查看添加或删除 Cron 做业的时间。
使用 Python SDK 时,您能够经过开发应用程序服务器提供的管理界面查看 /_ah/admin/cron
中的 cron 做业。
开发服务器不会自动运行您的 cron 做业。您可使用本地桌面的 cron 或计划任务接口经过 curl 或相似工具来触发做业的网址。