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,