Eu tenho um script python em execução como serviço no linux (também como autorun), e ele faz muita saída! Como posso ler esta saída quando o programa já está em execução?
Talvez eu pudesse registrar toda a saída em um arquivo, mas então eu teria que abrir e atualizar o arquivo o tempo todo quando a nova saída é registrada!
Respostas:
2 para resposta № 1Também é possível implementar a cauda do lado do python, que é basicamente uma leitura contínua dela. O trecho de código para fazer este trabalho pode ser encontrado aqui:
http://code.activestate.com/recipes/157035-tail-f-in-python/
Além disso, se você usar o modo de acréscimo de gravação de arquivos em vez do método de gravação, poderá gerar continuamente a saída.
O Scrapy também usa o conceito de pipelines que permite muitas funcionalidades iguais. Aqui está um exemplo de algum código escasso que você pode usar para fazer a mesma coisa:
class JsonWriterPipeline(object):
def __init__(self):
self.file = (open(filepath, "a"))
def process_item(self, item, spider):
self.file.write(json.dumps(dict(item)) + "n")
return item
3 para resposta № 2
Bem, quando se trata do segundo parágrafo da questão, no shell você pode fazer:
tail -f logfile.log
que atualiza automaticamente quando o arquivo é atualizado, portanto, no Linux, isso é uma solução funcional.