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.")
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ónprint()
, de esta manera:Esto asegurará que los registros se vacíen en CloudWatch inmediatamente después de que se haya ejecutado cada declaración
print()
.