aiouv icon indicating copy to clipboard operation
aiouv copied to clipboard

A PEP-3156 compatible event loop

======================================= aiouv: a PEP-3156 compatible event loop

Overview

PEP-3156 <http://www.python.org/dev/peps/pep-3156/>_ is a proposal for asynchronous I/O in Python, starting with Python 3.3. The reference implementation is codenamed Tulip and can be found here <https://code.google.com/p/tulip/>_. It's part of the standard library in 3.4 and also available in PyPI under the name asyncio.

aiouv is an event loop implementation for asyncio based on pyuv <https://github.com/saghul/pyuv>_.

Installation

aiouv depends on pyuv >= 1.0::

pip3 install -U pyuv

On Python 3.3, aiouv also requires asyncio >= 0.4.1::

pip3 install -U asyncio

Extra API functions

aiouv provides a few functions to create TCP, and UDP connections as well as cross platform named pipes support.

listen_tcp(loop, protocol_factory, addr)

Creates a TCP server listening in the specified address (IP / port tuple). On new connections a new TCPTransport will be created and a protocol will be created using the supplied factory.

Returns the listening handle.

connect_tcp(loop, protocol_factory, addr, bindaddr=None)

Create a TCP connection to the specified address. If bindaddr is specified, the local address is bound to it.

Returns a tuple with the created transport and protocol.

listen_pipe(loop, protocol_factory, name)

Creates a Pipe server listening in the specified pipe name. On new connections a new PipeTransport will be created and a protocol will be created using the supplied factory.

Returns the listening handle.

connect_pipe(loop, protocol_factory, name)

Create a Pipe connection to the specified pipe name.

Returns a tuple with the created transport and protocol.

create_udp_endpoint(loop, protocol_factory, local_addr=None, remote_addr=None)

Created a UDP endpoint. If local_addr is specified, the local interface will be bound to it. If remote_addr is specified, the remote target is set and it doesn't need to be specified when calling sendto().

Returns a tuple with the created transport and protocol.

Running the test suite

From the toplevel directory, run:

::

hg clone https://code.google.com/p/tulip/ asyncio
export PYTHONPATH=asyncio/
python runtests.py -v aiouv_events_test