Revel 支持计划任务(异步执行), 运行在请求流程的外部。比如,更新缓存数据的周期性任务,或发送电子邮件的临时任务。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的子洲网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
该框架是一个可选模块,默认是禁用的。要将它激活,需要在配置文件中添加该模块:
module.jobs = github.com/revel/revel/modules/jobs
此外,为了访问计划任务的监控页面,需要将下面的内容添加到路由文件中:
module:jobs
这条语句将插入 /@jobs
路由
有两个选项来限制计划任务。
这个例子显示了它们的默认值。
jobs.pool = 10 # 允许同时运行的任务数
jobs.selfconcurrent = false # 一个任务只允许一个实例
应用程序启动时, 使用revel.OnAppStart
注册一个函数来运行一个任务。Revel 在服务启动之前,会连续启动这些任务。 请注意,此功能实际上并未使用计划任务模块,它被用来提交任务,但并不阻止服务器的启动。
func init() {
revel.OnAppStart(func() { jobs.Now(populateCache{}) })
}
任务可以被指定在任意时间运行。使用的时间表有两个选项:
Revel 使用 cron library 来解析时间表和任务。cron库的说明 提供了时间格式的详细描述。
计划任务通常使用 revel.OnAppStart
钩子进行注册,但也可以在以后的任何时间注册。
下面是一些例子:
import (
"github.com/revel/revel"
"github.com/revel/revel/modules/jobs/app/jobs"
"time"
)
type ReminderEmails struct {
// 过滤
}
func (e ReminderEmails) Run() {
// 查询数据库
// 发送电子邮件
}
func init() {
revel.OnAppStart(func() {
jobs.Schedule("0 0 0 * * ?", ReminderEmails{})
jobs.Schedule("@midnight", ReminderEmails{})
jobs.Schedule("@every 24h", ReminderEmails{})
jobs.Every(24 * time.Hour, ReminderEmails{})
})
}
您可以在 app.conf
文件中配置时间表,并在任何地方引用。这可以为 crontab 格式提供易于重用和有用的说明。
在 app.conf
定义你的时间表,:
cron.workhours_15m = 0 */15 9-17 ? * MON-FRI
使用一个cron规范指定时间表,就可以在任何地方引用它。
func init() {
revel.OnAppStart(func() {
jobs.Schedule("cron.workhours_15m", ReminderEmails{})
})
}
注意: cron 时间表的名字必须以 “cron.”开头
有时候在响应用户的一个操作时,还要处理一些事情。在这种情况下,模块可以在某个时间运行一个任务。
模块提供的唯一控制是等待多长时间运行任务。
type AppController struct { *revel.Controller }
func (c AppController) Action() revel.Result {
// 处理请求
...
// 立即发送电子邮件(异步)
jobs.Now(SendConfirmationEmail{})
// 或者,一分钟后发送电子邮件(异步)。
jobs.In(time.Minute, SendConfirmationEmail{})
}
通过使用jobs.Func
类型包装一个func()
函数,来注册一个任务。例如:
func sendReminderEmails() {
// 查询数据库
// 发送电子邮件
}
func init() {
revel.OnAppStart(func() {
jobs.Schedule("@midnight", jobs.Func(sendReminderEmails))
})
}
模块提供了一个状态页面,用来显示任务的运行状态(IDLE 或 RUNNING), 以及之前和下次运行时间。
当前文章:创新互联Revel教程:Revel计划任务
网址分享:http://www.gawzjz.com/qtweb2/news11/24711.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联