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.

AWS: Los registros de Cloudwatch solo se publican después de que el trabajo por lotes esté completado.

Estoy utilizando un trabajo AWS Batch, que activa una imagen de ECR (Imagen de Docker que contiene código en Python) y los registros del lote van a Cloudwatch.

Según el código dentro de Docker, estoy usando el comando print para registrar como se muestra a continuación. El problema es que todas las declaraciones print se muestran en CloudWatch solo cuando se completa el lote, lo cual tarda alrededor de 2-3 horas en completarse.

Las impresiones no se registran según se ejecuta el código, en su lugar, todas las impresiones se muestran solo cuando se completa todo el proceso. ¿Hay alguna manera de vaciar la impresión tan pronto como se ejecuta la línea?

¿CloudWatch/Batch almacena los registros en memoria y los vacía solo cuando se completa el trabajo?

Código Python:

print("Proceso iniciado..")

<h1>algo de código</h1>

print("Proceso completado.")
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, CloudWatch/Batch almacena los registros en memoria y los vacía cuando se completa el trabajo. Para vaciar las declaraciones de impresión tan pronto como se ejecuta la línea, puedes usar el método sys.stdout.flush() después de cada declaración print(), de esta manera:

    import sys
    
    print("Proceso iniciado..")
    sys.stdout.flush()
    #código adicional
    print("Proceso completado.")
    sys.stdout.flush()
    

    Esto asegurará que los registros se vacíen en CloudWatch inmediatamente después de que se haya ejecutado cada declaración print().

Comments are closed.