Pre-release
This release is a pre-release and may not be stable for production use.
[](https://travis-ci.org/tbug/aiochannel)
aiochannel - AsyncIO Channel
============================
Channel concept for asyncio.
*requires* Python 3.4.4+ (I think)
Usage
-----------
### Basics
Channels are 90% `asyncio.Queue`, and the API is very similar.
The key difference is that a channel is only considered "done"
when it has been both closed and drained, so calling `.join()`
on a channel will wait for it to be both closed and drained
(Unlike `Queue` which will return from `.join()` once the queue
is empty).
*NOTE* Closing a channel is permanent. You cannot open it again.
```py
import asyncio
from aiochannel import Channel
# ...
# A Channel takes a max queue size and an loop
# both optional
my_channel = Channel(100, asyncio.get_event_loop())
# You add items to the channel with
yield from my_channel.put("my item")
# Note that this can throw ChannelClosed if the channel
# is closed, during the attempt at adding the item
# to the channel. Also note that .put() will block until
# it can successfully add the item.
# Retrieving is done with
my_item = yield from my_channel.get()
# Note that this can also throw ChannelClosed if the
# channel is closed before or during retrival.
# .get() will block until an item can be retrieved.
# You can wait for the channel to be closed and drained:
yield from my_channel.join()
# Note that this requires someone else to close and drain
# the channel.
# Lastly, you can close a channel with
my_channel.close()
# Every call to .put() after .close() will fail with
# a ChannelClosed.
# you can check if a channel is marked for closing with
if my_channel.closed():
print ("Channel is closed")
```
Like the `asyncio.Queue` you can also call non-coroutine get and put:
```py
# non-coroutine version of put
my_channel.put_nowait(item)
# This either returns None,
# or raises ChannelClosed or ChannelFull
# non-coroutine version of get
my_channel.get_nowait()
# This either returns the next item from the channel
# or raises ChannelEmpty or ChannelClosed
# (Note that ChannelClosed emplies that the channel
# is empty, but also that is will never fill again)
```
aiochannel - AsyncIO Channel
============================
Channel concept for asyncio.
*requires* Python 3.4.4+ (I think)
Usage
-----------
### Basics
Channels are 90% `asyncio.Queue`, and the API is very similar.
The key difference is that a channel is only considered "done"
when it has been both closed and drained, so calling `.join()`
on a channel will wait for it to be both closed and drained
(Unlike `Queue` which will return from `.join()` once the queue
is empty).
*NOTE* Closing a channel is permanent. You cannot open it again.
```py
import asyncio
from aiochannel import Channel
# ...
# A Channel takes a max queue size and an loop
# both optional
my_channel = Channel(100, asyncio.get_event_loop())
# You add items to the channel with
yield from my_channel.put("my item")
# Note that this can throw ChannelClosed if the channel
# is closed, during the attempt at adding the item
# to the channel. Also note that .put() will block until
# it can successfully add the item.
# Retrieving is done with
my_item = yield from my_channel.get()
# Note that this can also throw ChannelClosed if the
# channel is closed before or during retrival.
# .get() will block until an item can be retrieved.
# You can wait for the channel to be closed and drained:
yield from my_channel.join()
# Note that this requires someone else to close and drain
# the channel.
# Lastly, you can close a channel with
my_channel.close()
# Every call to .put() after .close() will fail with
# a ChannelClosed.
# you can check if a channel is marked for closing with
if my_channel.closed():
print ("Channel is closed")
```
Like the `asyncio.Queue` you can also call non-coroutine get and put:
```py
# non-coroutine version of put
my_channel.put_nowait(item)
# This either returns None,
# or raises ChannelClosed or ChannelFull
# non-coroutine version of get
my_channel.get_nowait()
# This either returns the next item from the channel
# or raises ChannelEmpty or ChannelClosed
# (Note that ChannelClosed emplies that the channel
# is empty, but also that is will never fill again)
```
Release files for aiochannel 0.0.4.dev0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distributions (sdists)
| File | Size | Uploaded | |
|---|---|---|---|
| aiochannel-0.0.4.dev0.zip | 13.2 kB | Details | |
| aiochannel-0.0.4.dev0.tar.gz | 7.5 kB | Details |
Release files / aiochannel-0.0.4.dev0.zip
| Download URL | aiochannel-0.0.4.dev0.zip |
|---|---|
| Size | 13.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
95ec8065335ac487b5b73bc298b7ce367b63a1031eba8d303ebe49d56a4607d6
|
|
BLAKE2b-256 checksum How to use checksums |
b3480776ec0133a61ced7f8408af4d280db8a9d4fc2857cb6b28e19e6beb081c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / aiochannel-0.0.4.dev0.tar.gz
| Download URL | aiochannel-0.0.4.dev0.tar.gz |
|---|---|
| Size | 7.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5e52229bc31b89b70312ccdeae576d8db2f29a09464cde40dad7f0e3e5bb296e
|
|
BLAKE2b-256 checksum How to use checksums |
4aa14553f2c42467badc1af943bd9f2071564a39b2d5c3e2dd1295e693e7667b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |