python - previene IOError: [Errno 5] Error de entrada / salida cuando se ejecuta sin stdout
Tengo un script que se ejecuta automáticamente en el servidor a través de cronjob e importa y ejecuta varios otros scripts.
Algunos de ellos usan impresiones, lo que naturalmente creaIOError: [Errno 5] Input/output error
porque el script se ejecuta sin ningún SSH / terminal conectado, por lo que no hay una configuración stdout adecuada.
Hay muchas preguntas sobre este tema, pero no pude encontrar a nadie que realmenteresolver suponiendo que no puedo eliminar la impresión o cambiar los scripts ejecutados.
Intenté varias cosas, incluyendo:
class StdOut(object):
def __init__(self):
pass
def write(self, string):
pass
sys.stdout = StdOut()
sys.stderr = StdOut()
y
from __future__ import print_function
import __builtin__
def print(*args, **kwargs):
pass
__builtin__.print = print
Pero nada de eso funciona. Supongo que solo afecta al módulo en sí y no a los módulos que importo / ejecuto más tarde.
Entonces, ¿cómo puedo crear un stub stdout que afectarátodas módulos en el proceso? Como dije, no quiero cambiar los scripts que se ejecutan desde el módulo principal, pero puedo cambiar todo dentro del módulo de importación. Y solo para aclarar: todo se importa, no se generan nuevos procesos, etc.
Gracias,