On 02:15 am, mebly5343@gmail.com wrote:
Good day, everyone:
I'm trying to learn Python and Twisted at the same time and having fun (mostly).
I'm writing an application that is collecting data from multiple sources, filtering the data, and providing it to users through a Telnet server. I can set up a polling loop for the server but I can't figure out how to get send the data to users connected to my server.
What about this specifically are you having difficulty with? The solution should probably be little more than a normal Python method call.
I thought I'd put the server in a thread and use a Queue to send data to it. But, I could do the work within the server application...
I'd skip the thread and the queue. From what you've said so far, there doesn't seem to be any reason to involve either.
The server I'm playing with, including the polling loop, is:
from twisted.conch.telnet import StatefulTelnetProtocol from twisted.internet import reactor, protocol
class TelnetEcho(StatefulTelnetProtocol):
def lineReceived(self, data): print "Type of self: " + str(type(self)) data = data.rstrip('\n\r') self.sendLine("Unrecognized command: %r\r" % (data,))
def checkforspots(): print "running checkforspots()" reactor.callLater(1.0,checkforspots)
def createTelnetServer(): factory = protocol.ServerFactory()
instance = TelnetEcho factory.protocol = instance
This isn't exactly wrong, but it's sort of misleading. You've defined the name "instance" here, but it's not bound to an instance. It's bound to the TelnetEcho class. Since you go on to set "factory.protocol" to this, it's right - that attribute is supposed to be a class, not an instance - but calling this "instance" suggests you might be confused, or it might confuse someone later reading the code.
port = reactor.listenTCP(8023,factory) print "Listening on port 8023"
print "Type of port: " + str(type(port)) checkforspots()
return port
if __name__ == "__main__": reactor.callWhenRunning(createTelnetServer) reactor.run()
Any suggestions greatly appreciated. I've been unable to find anything using my "google-fu" on this issue - I'm stuck.
It's possible this FAQ entry will help: http://twistedmatrix.com/trac/wiki/FrequentlyAskedQuestions#HowdoImakeinputo... Jean-Paul