es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crontab que llama a un script de Python a través de docker-compose no se ejecuta.

Tengo un crontab configurado para ejecutar un script de Python llamado desde un comando de docker-compose:

* * * * * cd ruta/al/repo && docker-compose run worker python -c "from directorio.modulo import test_function; test_function()"

El módulo y la función de prueba lucen así:

import logger

def test_function():
    logger.info('Hola')

El contenedor de Docker está en funcionamiento. Sin embargo, cuando voy a verificar mi archivo de registro, no se ha escrito nada en él. No estoy seguro de lo que debo hacer para que esto funcione correctamente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Podría haber varias razones posibles por las que el archivo de registro no se está escribiendo. Aquí hay algunos pasos que puedes seguir para solucionar el problema:

    1. Verifica los permisos del archivo de registro y asegúrate de que el usuario que está ejecutando el crontab tenga permiso de escritura en él.
    2. Verifica que el módulo de registro esté configurado correctamente y esté escribiendo en el archivo de registro especificado.
    3. Verifica si el trabajo cron se está ejecutando agregando un comando diferente como echo "hello" al crontab y verifica si se ejecuta.
    4. Utiliza el comando docker-compose logs para verificar si se están registrando errores cuando el contenedor del trabajador se está ejecutando.

    Además, vale la pena mencionar que el uso de docker-compose run para ejecutar un comando dentro de un contenedor cada minuto podría potencialmente crear un gran número de instancias de contenedor con el tiempo. Un enfoque mejor podría ser utilizar una herramienta de orquestación de contenedores como Kubernetes o Docker Swarm para administrar el contenedor y programar la ejecución del script como un trabajo programado.

Comments are closed.