This release is a pre-release and may not be stable for production use.
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)
```
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| aiochannel-0.0.4.dev0.zip | 13.2 kB | Without provenance | Details for aiochannel-0.0.4.dev0.zip | |
| aiochannel-0.0.4.dev0.tar.gz | 7.5 kB | Without provenance | Details for aiochannel-0.0.4.dev0.tar.gz |
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 |
Security for aiochannel 0.0.4.dev0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.