<html>
<head>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Crochet is an MIT-licensed library that makes it easier for
blocking or threaded applications like Flask or Django to use the
Twisted networking framework. Crochet provides the following
features:</p>
<ul class="simple">
<li>Runs Twisted's reactor in a thread it manages.</li>
<li>The reactor shuts down automatically when the process' main
thread finishes.</li>
<li>Hooks up Twisted's log system to the Python standard library <tt
class="docutils literal">logging</tt> framework. Unlike
Twisted's built-in <tt class="docutils literal">logging</tt>
bridge, this includes support for blocking Handler instances.</li>
<li>A blocking API to eventual results (i.e. <tt class="docutils
literal">Deferred</tt> instances). This last feature can be
used separately, so Crochet is also useful for normal Twisted
applications that use threads.</li>
</ul>
<p>You can download Crochet at: <a
href="http://pypi.python.org/pypi/crochet">http://pypi.python.org/pypi/crochet</a><br>
</p>
<p>Documentation can be found at: <a
href="http://crochet.readthedocs.org">http://crochet.readthedocs.org</a></p>
<p>Bugs and feature requests should be filed at the project page: <a
href="https://github.com/itamarst/crochet">https://github.com/itamarst/crochet</a><br>
</p>
<p><strong>What's New in 1.0.0</strong></p>
<strong></strong>
<p>Documentation:</p>
<ul class="simple">
<li>Added section on use cases and alternatives. Thanks to Tobias
Oberstein for
the suggestion.</li>
</ul>
<p>Bug fixes:</p>
<ul class="simple">
<li>Twisted does not have to be pre-installed to run <tt
class="docutils literal">setup.py</tt>, thanks to
Paul Weaver for bug report and Chris Scutcher for patch.</li>
<li>Importing Crochet does not have side-effects (installing
reactor event)
any more.</li>
<li>Blocking calls are interrupted earlier in the shutdown
process, to reduce
scope for deadlocks. Thanks to rmorehead for bug report.</li>
</ul>
<p><strong><br>
</strong></p>
</body>
</html>