2015-05-12 21 views
6

Sto provando a chiamare node file.js con Bluemix Workload Scheduler ogni mattina; file.js è nella radice del mio progetto node.js; file.js non è il mio file server. Ho usato per usare cron, ma sembra che "BlueMix doesn't have a concept of cron jobs."Workload Scheduler per lo script Node.js - è equivalente ai lavori cron in Bluemix?

Come risultato per il (solo) passo del mio processo, ho ottenuto "nodo: command not found"

penso che ho perso qualcosa. È possibile farlo anche con Workload Scheduler o dovrei trovare opzioni alternative?

Informazioni

che sto cercando di fare:

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.")}); 
}); 

posso vedere in "IBM Workload Automation su Cloud - Application Lab" che il processo è stato creato e avviato. Qualche tempo dopo, il processo ha fallito dicendo "comando del nodo non trovato"

Penso di aver letto nella documentazione che l'agente può solo chiamare comandi di sistema locali (come cat, pwd ...) o comandi che interagiscono con l'esterno (per chiamare i servizi REST). Quindi non c'è modo che possa trovare il comando nodo o file.js.

A meno che non installi tutto sull'agente? La documentazione dice che possiamo installare i programmi nella directory /home/wauser/workspace usando il comando arricciatura. È così che dovrei procedere?

+1

Potresti spiegare un po 'di più? –

+0

aggiunto ulteriori informazioni – bluemixer

+0

seguito, hai ancora questo problema? –

risposta

0

Suppongo che l'applicazione utilizzi il buildpack node.js integrato in Bluemix. Se è vero allora il nodo dovrebbe essere nel percorso. Ma non è chiaro per me che questo servizio di pianificazione possa analizzare correttamente il comando "node file.js". Forse si aspetta un solo comando senza parametri? Potresti provare a mettere un file di script che esegua "node file.js", ad esempio run.sh, e quindi lasciare che CommandStep invochi questo script?

4

È necessario modificare l'applicazione NodeJS per consentire l'esposizione di un metodo che può essere eseguito utilizzando il comando arricciatura e fornisce l'output e la registrazione appropriati. Il ricciolo che chiama il metodo verrà quindi eseguito nel lavoro Workload Scheduler. Il servizio Workload Scheduler non fa parte del runtime del nodo.

0

Come detto da lmosca nella sua risposta, il servizio Workload Scheduler è in esecuzione all'esterno di Node.js, ma è possibile utilizzarlo per attivare il codice in esecuzione su Node.js ed esposto come REST.

Oltre all'utilizzo di arricciatura, è possibile definire una fase REST nel processo in Workload Scheduler, per chiamare l'API REST senza utilizzare arricciatura.