aiochannel
asyncio Channels (closable queues) inspired by golang
Decision gist · record as of 2026-08-14
Yes. The package is actively maintained, has no dependencies, installs cleanly, and fills a real gap in asyncio's toolkit for applications that need Go-like channel semantics. The Apache-2.0 license is permissive. Install it if your asyncio code needs explicit close-and-drain lifecycle control or if you're porting Go patterns to Python.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later; asyncio event loop must be running.
- Low friction: pure Python wheel with no runtime dependencies.
- Actively maintained with a release 27 days ago and commits through August 2026; supports Python 3.10–3.14.
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows commercial and private use with minimal restrictions; suitable for most projects.
last release 2026-07-18 (27 days) · last repo commit 2026-08-03 · 41 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 88,819 downloads/mo, #13,701 on PyPI
Alternatives
Verify before relying
import asyncio
from aiochannel import Channel
async def main():
ch = Channel(100)
await ch.put("hello")
item = await ch.get()
ch.close()
await ch.join()
asyncio.run(main())- Performance characteristics (throughput, latency) compared to asyncio.Queue under typical workloads.
- Whether the package is used in production systems and what scale of deployments it supports.
What it is and what it does
aiochannel implements a channel abstraction for asyncio that mirrors Go's channel semantics. Unlike asyncio.Queue, a channel is considered "done" only when both closed and drained, so calling join() waits for full completion rather than just emptiness. The package provides async put/get methods that block until an item is available or space is free, non-async put_nowait/get_nowait variants, and async iteration support via async for loops. It raises ChannelClosed exceptions when operations occur on closed channels, giving explicit control over task synchronization.
The library has been maintained since 2015 and currently supports Python 3.10 through 3.14 with full type hints. It carries no external runtime dependencies, making it lightweight to add to projects that already use asyncio. The API is intentionally similar to asyncio.Queue to minimize learning curve, but the close-and-drain semantics make it better suited for producer-consumer patterns where you need to signal completion and ensure all work is processed before proceeding.
Use it for
- Coordinate work between multiple async tasks where you need to signal when production is complete and all items are consumed.
- Implement producer-consumer pipelines in asyncio applications with explicit lifecycle management.
- Replace asyncio.Queue when you need channels to remain closed permanently and distinguish between empty and closed states.
- Build async task pools or worker patterns where tasks communicate through typed, closable message channels.
- Migrate Go-style concurrent code to Python asyncio while preserving channel-based communication patterns.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
The package is actively maintained, has no dependencies, installs cleanly, and fills a real gap in asyncio's toolkit for applications that need Go-like channel semantics. The Apache-2.0 license is permissive. Install it if your asyncio code needs explicit close-and-drain lifecycle control or if you're porting Go patterns to Python.
Install
aiochannel on PyPI
Before you install
Low friction: pure Python wheel with no runtime dependencies. Actively maintained with a release 27 days ago and commits through August 2026; supports Python 3.10–3.14.
Requires Python 3.10 or later; asyncio event loop must be running.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; suitable for most projects.
Quickstart
import asyncio
from aiochannel import Channel
async def main():
ch = Channel(100)
await ch.put("hello")
item = await ch.get()
ch.close()
await ch.join()
asyncio.run(main())
Verify before relying
- Performance characteristics (throughput, latency) compared to asyncio.Queue under typical workloads.
- Whether the package is used in production systems and what scale of deployments it supports.
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release <4.0,>=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 27 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 88,819 / month, #13,701 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableFramework :: AsyncIOIntended Audience :: DevelopersIntended Audience :: System AdministratorsLicense :: OSI Approved :: Apache Software LicenseNatural Language :: EnglishOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: POSIXProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Typing :: Typed |
Evidence: aiochannel-1.4.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “asyncio channel queue”
- aiochannelProvides asyncio-compatible channels (closable queues) inspired by…
- janusProvides a thread-safe queue with both synchronous and asynchronous…
- channels-redisProvides Redis-backed channel layers for Django Channels, enabling…
Give your agent the search over MCP, or paste the wish link into any chat.
More Application Frameworks packages
FastAPI is a Python web framework for building REST APIs using type hints, with automatic request validation, serialization, and interactive API documentation.
Provides a way to document function parameters, class attributes, return types, and variables inline using Python's `Annotated` type hint syntax instead of traditional docstrings.
Textual is a Python framework for building cross-platform user interfaces that run in the terminal or web browser using a modern, component-based API.
Install it if you're developing CLI tools, dashboards, or interactive terminal applications.
Typer builds command-line applications from Python functions using type hints, automatically generating help text, argument parsing, and shell completion.
Install it if you are building CLIs in Python.
Build and connect to Model Context Protocol servers that expose tools, resources, and prompts to LLM applications over stdio, HTTP, or SSE transports.
Install it if you need to build or connect to servers.
Werkzeug is a WSGI utility library providing request/response objects, URL routing, an interactive debugger, HTTP utilities, and a development server for building web applications.
See also janus · aiormq · culsans · taskiq-aio-pika · aio-pika · arq · amqp · aioserial · gcloud-aio-taskqueue · channels-redis