]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Convert resolvers to @gen.coroutine.
authorBen Darnell <ben@bendarnell.com>
Sat, 2 Mar 2013 19:30:42 +0000 (14:30 -0500)
committerBen Darnell <ben@bendarnell.com>
Sat, 2 Mar 2013 19:30:42 +0000 (14:30 -0500)
This adds a requirement that there be a "current" IOLoop, which introduced
a few ripples.

tornado/httpclient.py
tornado/platform/caresresolver.py
tornado/platform/twisted.py
tornado/test/netutil_test.py
tornado/test/twisted_test.py

index 1b64550493d5359e2fedb8f3bde3d170710f5870..9ceeb022522c42cab0bb4c60fb350288d410be3e 100644 (file)
@@ -85,7 +85,8 @@ class HTTPClient(object):
         def callback(response):
             self._response = response
             self._io_loop.stop()
-        self._async_client.fetch(request, callback, **kwargs)
+        self._io_loop.add_callback(self._async_client.fetch, request,
+                                   callback, **kwargs)
         self._io_loop.start()
         response = self._response
         self._response = None
index 83fd86a8cdf4958ffe8cca99868e17e75f7a014e..729be3c415de64b6636839df5b301c08b811b128 100644 (file)
@@ -45,9 +45,8 @@ class CaresResolver(Resolver):
             write_fd = fd
         self.channel.process_fd(read_fd, write_fd)
 
-    @return_future
-    @gen.engine
-    def resolve(self, host, port, family=0, callback=None):
+    @gen.coroutine
+    def resolve(self, host, port, family=0):
         if is_valid_ip(host):
             addresses = [host]
         else:
@@ -73,4 +72,4 @@ class CaresResolver(Resolver):
                 raise Exception('Requested socket family %d but got %d' %
                                 (family, address_family))
             addrinfo.append((address_family, (address, port)))
-        callback(addrinfo)
+        raise gen.Return(addrinfo)
index eb6c402dcd65e8389c7608b263547272451cf139..7eb7b778dcc70378e33d7aa6d21ebb568e164d06 100644 (file)
@@ -499,6 +499,8 @@ class TwistedResolver(Resolver):
     most one result, and arguments other than ``host`` and ``family``
     are ignored.  It may fail to resolve when ``family`` is not
     ``socket.AF_UNSPEC``.
+
+    Requires Twisted 12.1 or newer.
     """
     def initialize(self, io_loop=None):
         self.io_loop = io_loop or IOLoop.instance()
@@ -513,9 +515,8 @@ class TwistedResolver(Resolver):
         self.resolver = twisted.names.resolve.ResolverChain(
             [host_resolver, cache_resolver, real_resolver])
 
-    @return_future
-    @gen.engine
-    def resolve(self, host, port, family=0, callback=None):
+    @gen.coroutine
+    def resolve(self, host, port, family=0):
         # getHostByName doesn't accept IP addresses, so if the input
         # looks like an IP address just return it immediately.
         if twisted.internet.abstract.isIPAddress(host):
@@ -539,4 +540,4 @@ class TwistedResolver(Resolver):
         result = [
             (resolved_family, (resolved, port)),
             ]
-        self.io_loop.add_callback(callback, result)
+        raise gen.Return(result)
index 6d9a63c1650299f28be67612298c7b125bf78694..ca594c0967cec2bccaac03f3d418866b42fd12c8 100644 (file)
@@ -65,6 +65,7 @@ class CaresResolverTest(AsyncTestCase, _ResolverTestMixin):
 
 
 @unittest.skipIf(twisted is None, "twisted module not present")
+@unittest.skipIf(twisted.__version__ < "12.1", "old version of twisted")
 class TwistedResolverTest(AsyncTestCase, _ResolverTestMixin):
     def setUp(self):
         super(TwistedResolverTest, self).setUp()
index f3c548490dc9380bcdf19bcf9379b19a2e48a011..bcde8028256c702eb80b8c25d0aa5d928423b33a 100644 (file)
@@ -351,10 +351,12 @@ class CompatibilityTests(unittest.TestCase):
     def setUp(self):
         self.saved_signals = save_signal_handlers()
         self.io_loop = IOLoop()
+        self.io_loop.make_current()
         self.reactor = TornadoReactor(self.io_loop)
 
     def tearDown(self):
         self.reactor.disconnectAll()
+        self.io_loop.clear_current()
         self.io_loop.close(all_fds=True)
         restore_signal_handlers(self.saved_signals)