summaryrefslogtreecommitdiff
path: root/README.rst
blob: 9f03922fe26d93a78b2abf9ff2dead0dfd4e3242 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
The asyncio module provides infrastructure for writing single-threaded
concurrent code using coroutines, multiplexing I/O access over sockets and
other resources, running network clients and servers, and other related
primitives.  Here is a more detailed list of the package contents:

* a pluggable event loop with various system-specific implementations;

* transport and protocol abstractions (similar to those in Twisted);

* concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, and
  others (some may be system-dependent);

* a Future class that mimics the one in the concurrent.futures module, but
  adapted for use with the event loop;

* coroutines and tasks based on ``yield from`` (PEP 380), to help write
  concurrent code in a sequential fashion;

* cancellation support for Futures and coroutines;

* synchronization primitives for use between coroutines in a single thread,
  mimicking those in the threading module;

* an interface for passing work off to a threadpool, for times when you
  absolutely, positively have to use a library that makes blocking I/O calls.

Note: The implementation of asyncio was previously called "Tulip".


Installation
============

To install asyncio, type::

    pip install asyncio

asyncio requires Python 3.3 or later! The asyncio module is part of the Python
standard library since Python 3.4.

asyncio is a free software distributed under the Apache license version 2.0.


Websites
========

* `asyncio project at GitHub <https://github.com/python/asyncio>`_: source
  code, bug tracker
* `asyncio documentation <https://docs.python.org/dev/library/asyncio.html>`_
* Mailing list: `python-tulip Google Group
  <https://groups.google.com/forum/?fromgroups#!forum/python-tulip>`_
* IRC: join the ``#asyncio`` channel on the Freenode network


Development
===========

The actual code lives in the 'asyncio' subdirectory. Tests are in the 'tests'
subdirectory.

To run tests, run::

    tox

Or use the Makefile::

    make test

To run coverage (coverage package is required)::

    make coverage

On Windows, things are a little more complicated.  Assume 'P' is your
Python binary (for example C:\Python33\python.exe).

You must first build the _overlapped.pyd extension and have it placed
in the asyncio directory, as follows:

    C> P setup.py build_ext --inplace

If this complains about vcvars.bat, you probably don't have the
required version of Visual Studio installed.  Compiling extensions for
Python 3.3 requires Microsoft Visual C++ 2010 (MSVC 10.0) of any
edition; you can download Visual Studio Express 2010 for free from
http://www.visualstudio.com/downloads (scroll down to Visual C++ 2010
Express).

Once you have built the _overlapped.pyd extension successfully you can
run the tests as follows:

    C> P runtests.py

And coverage as follows:

    C> P runtests.py --coverage