twisted - locking threads when deferToThread is used

Ladislav Andel ladaan at iptel.org
Wed Aug 8 11:51:34 EDT 2007


And here is the code:

from twisted.internet import reactor, defer, threads

from siptest import siptest_f
from twisted.internet.threads import deferToThread


test_opts = 
{'username':'test','transport':'udp','localport':'5085','password':'test'}
domain = ['sip.1und1.de', 'sip.babble.net']

class Getter:
   
    def gotResults(self, domain, test_opts):
       
        if len(domain) != 0:
            self.d.callback(siptest_f(domain, test_opts))
        else:
            self.d.errback(ValueError("You used an odd number!"))

    def _print(self, r, domain):
       
        return domain, r
   
   
    def getServerResponse(self, domain, test_opts):
               
        self.d = threads.deferToThread(self.gotResults, domain, test_opts)
        self.d.addCallback(self._print, domain)
        return self.d

def printData(d):
    print d

def printError(failure):
    import sys
    sys.stderr.write(str(failure))

def test():
    for dom in domain:
        g = Getter()
        d = g.getServerResponse(dom, test_opts)
        d.addCallback(printData)
        d.addErrback(printError)

if __name__ == '__main__':
    test()
    reactor.run()
   



More information about the Python-list mailing list