Ejecutando un script casper.js desde cron

Estoy tratando de ejecutar un script casper.js a través de cron. Todo funciona bien cuando ejecuto el script manualmente, pero cuando lo ejecuto a través de cron obtengo los siguientes errores:

Traceback (most recent call last):
 File "/usr/local/bin/casperjs", line 46, in <module>
   status = subprocess.call(CASPER_COMMAND)
 File "/usr/lib/python2.6/subprocess.py", line 480, in call
   return Popen(*popenargs, **kwargs).wait()
 File "/usr/lib/python2.6/subprocess.py", line 633, in __init__
   errread, errwrite)
 File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child
   raise child_exception
OSError: [Errno 2] No such file or directory

Mi entrada crontab es:

30 9 * * * /usr/local/bin/casperjs lib/fsaupload.js arg1 arg2 arg3

Yo tambien lo he intentado

30 9 * * * python /usr/local/bin/casperjs lib/fsaupload.js arg1 arg2 arg3

Lo que me da el mismo resultado. ¿Algunas ideas? Supongo que podría ser un path problema, pero no tengo idea de a dónde ir desde aquí!

preguntado el 22 de mayo de 12 a las 16:05

3 Respuestas

Probablemente debería usar una ruta absoluta a su secuencia de comandos casper, algo como:

30 9 * * * /usr/local/bin/casperjs /absolute/path/to/lib/fsaupload.js arg1 arg2 arg3

Mis dos centavos.

Edit:

Está bien, fue un poco tonto. También puede establecer una ruta personalizada a la phantomjs ejecutable configurando el PHANTOMJS_EXECUTABLE Variable ambiental:

$ export PHANTOMJS_EXECUTABLE="/path/to/phantomjs"

Luego ejecute su script como de costumbre:

/usr/local/bin/casperjs /absolute/path/to/lib/fsaupload.js arg1 arg2 arg3

Sugerencia: si su crontab se ejecuta como otro usuario, verifique que tenga acceso a la ruta phantomjs.

Espero que ayude (y funcione).

Editar de nuevo

Espere, el seguimiento de la pila que obtiene dice que está usando una versión anterior de CasperJS (por ejemplo, el subprocess el módulo ya no se usa). Prueba con una versión más reciente :)

contestado el 22 de mayo de 12 a las 20:05

Hmmmm... Todavía nada. Sigo teniendo el mismo error. Incluso he intentado especificar la ruta completa a Python también, pero aún no hay dados. ¿Algunas ideas? - Pezholio

¿Qué sucede si está intentando ejecutar con --web-security=no , esto debería funcionar correctamente? - Erik

Esta es una pregunta anterior, pero aún relevante: acabo de pasar 4 horas tratando de resolver esto, sin encontrar una solución directa. Lo que estaba sucediendo para mí era exactamente lo mismo, podía ejecutar el script casper.js desde la línea de comando de Shell, pero no a través de un trabajo cron. Como lo aludió NiKo, pero no lo explicó con suficiente claridad para me a obtenerCasper necesita saber dónde está Phantomjs para poder trabajar.

Creé un script de shell, cron_wrap.sh, que contiene la ruta al directorio bin de Phantomjs:

#!/bin/bash
PATH=/usr/local/src/phantomjs/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
/usr/local/bin/casperjs --ignore-ssl-errors=true /srv/www/apps/myscript.js

Haga que su .sh sea ejecutable, ahora puede agregar el script a cron:

00 09 * * * /srv/www/apps/myscript.js

Respondido 04 Abr '16, 21:04

Esta es una pregunta más antigua, pero también estuve lidiando con esto por un tiempo. Ya no podía reiniciar Apache (para Django) a través de cron (hablar sobre el tiempo de inactividad) y este terminó siendo el problema. En lugar de la secuencia de comandos de envoltorio como la que usó Jesse Q, acabo de agregar mi RUTA casperjs/phantom-augmented a la PARTE SUPERIOR de mi crontab

PATH=/usr/local/src/phantomjs/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
/usr/local/bin/casperjs

y ahora funciona. Puede verificar su entorno cron escribiendo en un archivo en crontab así:

* * * * * env > ~/cronenv

solo vim en él para ver cuál es su PATH cron actual. Bueno para depurar este problema.

Respondido el 13 de diciembre de 16 a las 16:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.