<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Do you wish you could:<br>
    <ul>
      <li>Use the power of Twisted's asynchronous networking in Django,
        Flask, or other threaded applications?</li>
      <li>Provide a blocking API powered by Twisted underneath, without
        exposing it to the caller?</li>
      <li>Write a library that provides APIs both for Twisted and
        non-Twisted applications?<br>
      </li>
      <li>Use threads more easily inside Twisted applications?</li>
    </ul>
    <p>Crochet lets you do all that, and more, by hiding and
      automatically starting the Twisted reactor and providing a
      blocking API for calling into Twisted. If you need to use your
      library from a normal Twisted application you can disable the
      auto-start functionality. Here's an example of using Twisted in a
      blocking manner:<br>
    </p>
    <pre>from __future__ import print_function
from twisted.names import client
from crochet import setup, wait_for
setup()

@wait_for(timeout=5.0)
def gethostbyname(name):
     """Use the Twisted DNS library."""
     d = client.lookupAddress(name)
     d.addCallback(lambda result: result[0][0].payload.dottedQuad())
     return d

if __name__ == '__main__':
     # Application code using the public API - notice it works in a normal
     # blocking manner, with no event loop visible:
     import sys
     name = sys.argv[1]
     ip = gethostbyname(name)
     print(name, "->", ip)

</pre>
    New in 1.5.0 is official Python 3.5 support; Python 2.6, 3.3 and
    older versions of Twisted are no longer officially supported (but
    are likely to still work).<br>
    <br>
    If you need help using Crochet (or just general Twisted or Python
    help) I am currently available for short-term consulting. You can
    read the documentation at <a
      href="https://crochet.readthedocs.org/"><a class="moz-txt-link-freetext" href="https://crochet.readthedocs.org/">https://crochet.readthedocs.org/</a></a>.<br>
    <br>
    --Itamar Turner-Trauring
  </body>
</html>