1

我想使用actionheronode.js 中的任务每 5 分钟运行一次任务,我在任务文件夹中定义的任务如下:

'use strict';
exports.task = {
    name: 'scheduleTask',
    description: 'Convert Temp Data Into Portal',
    frequency: 300000,
    queue: 'syncPortal',

    run: function (api, params, next) {
        api.services.ErpToPortal
        .syncInitializeFunctions({})
        .then(() => {
            return api.services.ErpToPortal
            .syncPerson({})
        })
        .then(() => {
            return api.services.ErpToPortal
                .syncContractors({})
        })
        .then((res) => {
            next(null, res);
        })
        .catch(function (err) {
            api.log(err, 'error', err);
            next(err);
        });
    }
};

我的问题是在启动 api 服务器时任务不会自动启动actionhero,我在这里遗漏了什么吗?正如我从 actionherojs 文档中了解到的那样,在定义任务的频率后,通过启动 actionhero api 服务器,任务应该自动启动。

4

2 回答 2

0

您需要确保 config/tasks.js 中的配置具有大于 1 的运行工作者数量,并且调度程序设置为启用:true。默认情况下,情况并非如此,并且队列不是开箱即用的。

于 2017-12-11T04:55:02.070 回答
0

在 actionhero,您必须将任务排入队列才能第一次运行。

api.tasks.enqueue("taskname",params,'queue')

在此之后,如果您想重复任务,请在任务中使用频率定义

于 2019-04-04T12:09:36.633 回答