介绍
ReactGO 内置任务调度模块,它的工作方式类似于 UNIX 系统的 crontab,并且采用同样的表达式。
可以调度 2 种类型,一种是函数
,一种是命令
,函数是预先编译到 ReactGO 执行文件中的函数,
这些函数按照一定的规范编写。命令是系统中的可执行文件,例如 ls
,也可以是你用任何语言编写的程序。
函数
函数是硬编码到 ReactGO 执行文件中的,它们不灵活,但是效率高,并且可以直接访问 ReactGO
的运行时环境。目前只有一个函数 test
。
命令
你可以用任何语言编写命令,例如 nodejs, ruby, python 都是可以的, 这可以充分利用各种语言和模块的优势,例如某个任务用 shell 写非常的便捷,用另外一种语言写就很麻烦。
运行命令需要的环境,例如 nodejs 需要的 npm 模块,需要你自己准备好,ReactGO 没有提供任何的环境。
重入
ReactGO 的任务调度是不可重入的,意思就是说,一个任务正在运行,还没有结束,那么不会再次调度这个任务。 除非:
- 为同一个命令增加了 2 个或多个调度;
- 手动触发;
手动触发
ReactGO 支持手动触发任务,这需要到管理后台去点一个按钮,手动触发会破坏重入规则。
环境变量
你可以为命令设置环境变量,这是传递参数的一种方式,例如某个命令在运行时需要访问一个外部服务, 那个外部服务需要账号/密码,你当然可以将账号/密码硬编码到命令中,但不够灵活,且不够安全, 你可以在环境变量中配置。