Tengo un script de Python que gestiona una serie de tareas CasperJS y procesa el resultado. Se ejecuta bien desde la línea de comandos, pero cuando ejecuto el script en cron, me sale el error:El subproceso de Python devuelve un estado de salida distinto de cero en cron
CasperJSCalledProcessError: Command '['/path/to/casperjs', '/path/to/doSomething.js', 'args']' returned non-zero exit status 1
En Python, llamada:
response = subprocess.check_output(['/path/to/casperjs', '/path/to/doSomething.js', 'args'], shell=True)
He tratado shell=False
y Popen
como bien, pero obtengo el mismo resultado. También intenté hacer que el comando completo fuera una cadena (en lugar de una lista), pero eso tampoco ayudó.
Corriendo '/path/to/casperjs /path/to/doSomething.js args'
devuelve el código de salida 0 cuando se ejecuta en el shell.
También he agregado PATH=/usr/bin:/bin:/sbin:/usr/local/bin
a mi crontab en vano. (Como se sugiere en this question.)
¿Alguna idea de por qué solo obtengo este error en cron? ¡¡Gracias!!
EDIT: De acuerdo con la respuesta a continuación, establecer shell=False
y stderr=subprocess.STDOUT
trabajo todo lo hecho ...
voy a añadir a esto que la razón más común para las "obras de este comando al ejecutarlo manualmente, pero no bajo cron/Supervisor/advenedizo/.. . "es una variable de entorno - no siempre PATH - es diferente o se pierde gramo. – mattbornski
Sí, estaba comprobando todas las variables de entorno, pero estableciendo 'shell = False' y agregando' stderr = subprocess.STDOUT' y ahora todo funciona mágicamente? !! – arboc7
@mattbornski: Ya estoy de acuerdo. Es eso, o tal vez el proceso tiene problemas para ejecutarse bajo cualquier usuario que esté configurado como crontab. No quería especular demasiado, sino intentar averiguar cuál podría ser el verdadero error – jdi