Twisted is a production-quality event-driven networking engine with built-in support for many protocols (HTTP, DNS, SSH, IMAP), and a large ecosystem of 3rd party libraries. Twisted works on both Python 2 and a subset of functionality is supported on Python 3.
Asyncio (also known as Tulip) is a new networking event loop implementation included with Python 3.4, whose core networking layer was modeled on Twisted APIs. Trollius is a backport of Asyncio to Python 2.
txtulip aims to allow using both Twisted and Tulip/Asyncio/Trollius in the same Python process by:
- Running the Twisted reactor on top of Asyncio’s event loop.
- Alternatively, running the Asyncio event loop on top of Twisted’s reactor (work in progress).
- Hooking up Deferreds and Futures (planned, no code yet).
txtulip is licensed under the MIT open source license, and maintained by Itamar Turner-Trauring.
txtulip can be downloaded at https://pypi.python.org/pypi/txtulip
Bugs and feature requests shoudl be filed at https://github.com/itamarst/txtulip
This package is experimental; pull requests are welcome.
Twisted on Asyncio
The vast majority of the Twisted test suite does pass on the new reactor. The remaining test failures are due to:
- Fragile or buggy tests in Twisted’s test suite.
- Bugs in asyncio that do not exist in Twisted, especially in the epoll event loop (lack of support for large values in call_later, lack of support for filesystem files which can happen e.g. when they are hooked up to stdin/out).
- Potentially, bugs in txtulip.
- POSIX platform
- Either: Python 3.4, Twisted 14.0 and trunk
- Or: Python 2.7, Trollius, and a modern version of Twisted
Twisted on Asyncio
Using txtulip is easy. Before importing any Twisted code, install the txtulip reactor:
from txtulip.reactor import install install()
See examples/echoserv.py for an example.
On Python 2 (or once trial/twistd command line tools are ported to Python 3), you can also specify trial --reactor=tulip or twistd --reactor=tulip.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, Size & Hash SHA256 Hash Help||File Type||Python Version||Upload Date|
(8.1 kB) Copy SHA256 Hash SHA256
|Wheel||3.5||May 26, 2016|
(5.0 kB) Copy SHA256 Hash SHA256
|Source||None||May 26, 2016|