Revel 计划任务


本文整理自网络,侵删。

Revel 支持计划任务(异步执行), 运行在请求流程的外部。比如,更新缓存数据的周期性任务,或发送电子邮件的临时任务。

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{}) })
}

周期性任务

任务可以被指定在任意时间运行。使用的时间表有两个选项:

  1. 一个cron时间格式
  2. 固定时间间隔

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 格式提供易于重用和有用的说明。

阅读剩余部分

相关阅读 >>

Revel 参数绑定

Revel 消息处理

Revel session flash

Revel results

Revel 路由routes

Revel 概念

Revel 常见问题

Revel 版本控制

Revel 模板

Revel 控制器概要

更多相关阅读请进入《Revel》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...