Node.js脚本的Workload Scheduler - 它是否等同于Bluemix中的cron作业?

时间:2015-05-12 10:46:44

标签: node.js scheduler ibm-cloud

我每天早上都试图用Bluemix Workload Scheduler调用node file.js; file.js在我的node.js项目的根目录中; file.js不是我的服务器文件。我曾经使用过cron,但看起来像是"BlueMix doesn't have a concept of cron jobs."

作为我的过程的(仅)步骤的结果,我得到了" node:command not found"

我想我错过了什么。是否可以使用Workload Scheduler执行此操作,还是应该找到其他选项?

更多信息

我试图这样做:

var wls = new WorkloadService(credentials);

var wp = new WAProcess("MyProcessName", "DescriptionProcess");
wp.addStep(new CommandStep("node file.js", myAgentName));
wp.addTrigger( TriggerFactory.repeatDaily(1) );

wls.createAndEnableTask(wp, function(res){
    wls.runTask(res.id, function(){console.log("Process is created and started.")});
});

我可以在" IBM Workload Automation on Cloud - Application Lab"该过程已创建并启动。几个后来,进程失败说'#34;节点命令未找到"

我想我在文档中读到代理只能调用本地系统命令(例如cat,pwd ...)或与外部交互的命令(用于REST服务调用)。所以它无法找到node命令或file.js.

除非我在代理上安装所有内容?文档说我们可以使用 curl 命令在/home/wauser/workspace目录中安装程序。我应该怎么做?

3 个答案:

答案 0 :(得分:4)

您应该修改NodeJS应用程序,让它公开一个可以使用curl命令运行的方法,并提供正确的输出和日志记录。然后,调用该方法的curl将在Workload Scheduler作业中运行。 Workload Scheduler服务不是节点运行时的一部分。

答案 1 :(得分:0)

我想您的应用程序正在使用Bluemix中的内置node.js buildpack。如果那是真的那么节点应该在路径中。但是我不清楚这个调度程序服务是否可以正确地解析命令“node file.js”。也许它只期望一个没有参数的命令?你能尝试放一个执行“node file.js”的脚本文件,比如run.sh,然后让CommandStep调用这个脚本吗?

答案 2 :(得分:0)

正如lmosca在她的回答中所说,Workload Scheduler服务在Node.js之外运行,但您可以使用它来触发在Node.js上运行并作为REST公开的代码。

除了使用curl之外,您还可以在Workload Scheduler中的流程中定义REST步骤,以便在不使用curl的情况下调用REST API。