Node.js脚本的工作负载调度程序 – 是否等同于Bluemix中的cron作业?

我试图每天早上用Bluemix Workload Scheduler调用node file.js file.js; file.js位于我的node.js项目的根目录下; file.js不是我的服务器文件。 我曾经使用cron,但似乎“BlueMix没有cron工作的概念”。

作为我的过程(唯一)一步的结果,我得到了“节点:命令未find”

我想我错过了一些东西。 是否有可能与Workload Scheduler做到这一点,或者我应该find替代选项?

更多信息

我正在尝试做:

 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 – 应用程序实验室”中看到该进程已创build并启动。 几个后来,进程失败,说“节点命令未find”

我想我在文档中读到,代理只能调用本地系统命令(如cat,pwd …)或与外部交互的命令(用于REST服务调用)。 所以没有办法find节点命令或file.js.

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

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

我想你的应用程序正在使用Bluemix中内置的node.js构build包。 如果这是真的,那么节点应该在path中。 但是我不清楚这个调度程序服务可以正确parsing命令“node file.js”。 也许它只期待一个没有参数的命令? 你可以试着放一个执行“node file.js”的脚本文件,比方说run.sh,然后让CommandStep调用这个脚本?

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

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