python - impedir IOError: [erro 5] Erro de entrada / saída ao executar sem stdout

Eu tenho um script que é executado automaticamente no servidor através do cronjob e importa e executa vários outros scripts.

Alguns deles usam impressões, o que naturalmente criaIOError: [Errno 5] Input/output error porque o script é executado sem nenhum SSH / terminal conectado, não há uma configuração stdout adequada.

Existem muitas perguntas sobre esse assunto, mas não consegui encontrar ninguém que realmenteresolver assumindo que não posso remover a impressão ou alterar os scripts executados.

Eu tentei várias coisas, incluindo:

class StdOut(object):
    def __init__(self):
        pass
    def write(self, string):
        pass
sys.stdout = StdOut()
sys.stderr = StdOut()

e

from __future__ import print_function
import __builtin__

def print(*args, **kwargs):
        pass
    __builtin__.print = print

Mas nada disso funciona. Suponho que isso afeta apenas o módulo em si e não os módulos que eu importo / execute mais tarde.

Então, como posso criar um stub stdout que afetarátudo módulos no processo? Como eu disse, não quero alterar os scripts que são executados no módulo principal, mas posso mudar tudo dentro do módulo de importação. E apenas para esclarecer - tudo é importado, nenhum novo processo é gerado etc.

Obrigado,

questionAnswers(1)

yourAnswerToTheQuestion