[Twisted-Python] Twisted with callInThread

Mike Zupan hijinks at gmail.com
Tue Nov 2 16:11:06 EDT 2010


I stripped down my app but this should give you an example of what i'm doing

def run_app(f):
    p = Popen(['/usr/bin/app'],stdout=PIPE)
    while True:
        o = p.stdout.readline()
        if o == '' and p.poll() != None: break

        reactor.callFromThread(f, o)

class Echo(Protocol):
    def connectionMade(self):

        reactor.callInThread(run_app, self.appDataReceived)

    def dataReceived(self, data):
        data = data.strip()
        if data == "getmore":
            print "getmore"

    def appDataReceived(self, u):
        print u

def main():
    factory = Factory()
    factory.protocol = Echo
    reactor.listenTCP(3646, factory)
    reactor.run()

if __name__ == "__main__":
    main()


I have an app which I want to connect in and run a app that
continually spits out data to stdout. Right now my app works but the
issue is when the client exits the socket connection the /usr/bin/app
still continues to run. The more socket connections made the more this
app is still running.

Is there anyway from the Echo Procool to kill the run_app() function?



More information about the Twisted-Python mailing list