asyncio event loop scheduling callbacks in eventlet. See also the Trollius project: http://trollius.readthedocs.org/ Status ====== The version 0.1 is the first public release. It was not tested on any project yet. Installation ============ Requirements: - eventlet (it was tested with eventlet 0.15) - asyncio or trollius: * Python 3.4 and newer: asyncio is now part of the stdlib * Python 3.3: need Tulip 0.4.1 or newer (pip install asyncio) * Python 2.6-3.2: need trollius 1.0 or newer (pip install trollius) Type:: pip install aiogreen or:: python setup.py install Changelog ========= 2014-11-19: version 0.1 ----------------------- * First public release Implemented =========== Methods: * call_at() * call_later() * call_soon() * run_forever() * run_in_executor() * run_until_complete() * create_connection(): TCP client * stop() * coroutines and tasks Tests of aiogreen 0.1: * Tested on Python 2.7, 3.3 and 3.5 * Tested on Linux and Windows * Tested with Trollius 1.0, 1.0.1 and 1.0.2 * Tested with asyncio 0.4.1 and 3.4.2 Not supported (yet) =================== * run an event loop in a thread different than the main thread * sockets: create_server, sock_recv * pipes: connect_read_pipe * subprocesses: need pipes * signal handlers: add_signal_handler (only for pyevent hub?) To do ===== * Write new unit tests, or split Tulip test suite between implementation tests and specification tests * Support eventlet without monkey-patching * Test with Python 2 and 3 * Test with Trollius and asyncio * Port to Windows; test on operating systems other than Linux * Glue to ease debug: keep traceback between Handle, coroutine and greenthread. Is it even possible? * run_in_executor(): use eventlet.tpool as the default executor? It avoids the dependency to concurrent.futures. aiogreen is written as a temporary solution to switch from eventlet to asyncio. So it may be better to use directly concurrent.futures to reduce the usage of eventlet?