``tornado.platform.twisted`` --- Bridges between Twisted and Tornado
====================================================================

.. module:: tornado.platform.twisted

.. deprecated:: 6.0

   This module is no longer recommended for new code. Instead of using
   direct integration between Tornado and Twisted, new applications should
   rely on the integration with ``asyncio`` provided by both packages.

Importing this module has the side effect of registering Twisted's ``Deferred``
class with Tornado's ``@gen.coroutine`` so that ``Deferred`` objects can be
used with ``yield`` in coroutines using this decorator (importing this module has
no effect on native coroutines using ``async def``). 

.. function:: install()

    Install ``AsyncioSelectorReactor`` as the default Twisted reactor.

    .. deprecated:: 5.1

       This function is provided for backwards compatibility; code
       that does not require compatibility with older versions of
       Tornado should use
       ``twisted.internet.asyncioreactor.install()`` directly.

    .. versionchanged:: 6.0.3

       In Tornado 5.x and before, this function installed a reactor
       based on the Tornado ``IOLoop``. When that reactor
       implementation was removed in Tornado 6.0.0, this function was
       removed as well. It was restored in Tornado 6.0.3 using the
       ``asyncio`` reactor instead.

Twisted DNS resolver
--------------------

.. class:: TwistedResolver

    Twisted-based asynchronous resolver.

    This is a non-blocking and non-threaded resolver.  It is
    recommended only when threads cannot be used, since it has
    limitations compared to the standard ``getaddrinfo``-based
    `~tornado.netutil.Resolver` and
    `~tornado.netutil.DefaultExecutorResolver`.  Specifically, it returns at
    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.

    .. versionchanged:: 5.0
       The ``io_loop`` argument (deprecated since version 4.1) has been removed.

    .. deprecated:: 6.2
       This class is deprecated and will be removed in Tornado 7.0. Use the default
       thread-based resolver instead.

