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