Do you wish you could:
* Use the power of Twisted's asynchronous networking in Django, Flask,
or other threaded applications?
* Provide a blocking API powered by Twisted underneath, without
exposing it to the caller?
* Write a library that provides APIs both for Twisted and non-Twisted
applications?
* Use threads more easily inside Twisted applications?
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:
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)
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).
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 https://crochet.readthedocs.org/.
--Itamar Turner-Trauring
--
https://mail.python.org/mailman/listinfo/python-announce-list
Support the Python Software Foundation:
http://www.python.org/psf/donations/