Twisted: servidor TCP com exemplo de produtor push?
Pergunta
Quero montar o servidor TCP simples usando Python e Twisted.
O servidor é iniciado e aguarda a conexão - eu já tenho um aplicativo cliente - não -python. Uma vez que a conexão seja feita, o servidor inicia o envio de dados em algum intervalo (por exemplo, 1 s).
O servidor lê dados de um arquivo estático (um registro de cada vez), eu devo descobrir essa parte.
Presumo que eu usaria o produtor push para começar a pressionar os dados assim que o cliente estiver conectado.
Eu tenho um servidor TCP simples com a fábrica em torcida e posso reagir a conexão de conexão/datarece e assim por diante, mas não consigo imaginar como conectar o produtor de pressão.
Alguém conhece algum exemplo que mostra o produtor push com o TCP Server em Twisted?
Solução
Que tal algo simplista como:
thedata = '''
Questa mattina
mi son svegliato
o bella ciao, bella ciao,
bella ciao, ciao, ciao
questa mattina
mi son svegliato
ho trovato l'invasor!
'''.splitlines(True)
class Push(protocol.Protocol):
"""This is just about the simplest possible protocol"""
def connectionMade(self):
for line in thedata:
if not line or line.isspace():
continue
self.transport.write(line)
time.sleep(1.0)
self.transport.loseConnection()
Isso possui dados codificados, mas você diz que ler em um arquivo não é o seu problema. Se você pode nos dizer o que há de errado com este "servidor push" excessivamente simplista, talvez possamos oferecer melhor ajuda!-)
Outras dicas
Aqui é um exemplo completo de um produtor de pressão. Foi adicionado ao SVN torcido como exemplo.