我每天早上都试图用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
目录中安装程序。我应该怎么做?
答案 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。