搜索结果(2)

Crontab / 定时任务

## Crontab / 定时任务

有些定时任务是拉取一些数据放在内存中,供用户请求过程中使用,这种定时任务就希望在当前进程中调用(由于框架启动服务时是多进程架构,所以定时任务只会在子进程中执行,不会在主进程中执行),该功能是通过 [think-crontab](https://github.com/thinkjs/think-crontab) 模块来完成的。

定时任务的配置文件为 `src/config/crontab.js`(多模块项目下配置文件为 `src/common/config/crontab.js`,也支持在每个模块下配置定时任务文件 `src/[module]/config/crontab.js`),配置项为一个数组。如:

handle: 'crontab/test',

* `cron` {String} crontab 的格式,如 `0 */1 * * *`

crontab 格式,具体见 <http://crontab.org/>。如果配置了 `interval` 属性,那么会忽略该属性。

* `handle` {Function | String} 执行任务,执行相应函数或者是路由地址,如:`crontab/test`

如果想看到定时任务是否在成功运行,可以通过 `DEBUG=think-crontab npm start` 启动项目查看打印的调试信息。

如果有些定时任务跨机房、跨机器只希望执行一次,或者定时任务比较耗时,那么可以通过命令行来执行。命令行执行需要结合系统的 crontab 任务来完成。

命令行执行直接通过自动脚本和路由地址即可,如:`node production.js crontab/test`,其中 `crontab/test` 为路由地址,这样结合系统的 crontab 就可以定时执行了。

运行流程

- 加载定时任务配置文件 `src/config/crontab.js`,并注册定时任务服务。