grpclib
Pure-Python gRPC implementation for asyncio
Install
grpclib on PyPI
pip
pip install grpclibuv
uv add grpclibpoetry
poetry add grpclibPackage facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — h2, multidict |
| Maintenance | aging — 242 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: grpclib-0.4.9-py3-none-any.whl
About grpclib
from the package's own PyPI description — quoted content, verbatim
Pure-Python gRPC implementation for asyncio
.. image:: https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/7e1631d13476f1e870af0d5605b643fc14471a6d/banner-direct-single.svg :target: https://savelife.in.ua/en/
|project| |documentation| |version| |tag| |downloads| |license|
This project is based on hyper-h2_ and requires Python >= 3.10.
.. contents:: :local:
Example ~~~~~~~
See examples_ directory in the project's repository for all available
examples.
Client
.. code-block:: python3
import asyncio
from grpclib.client import Channel
# generated by protoc from .helloworld_pb2 import HelloRequest, HelloReply from .helloworld_grpc import GreeterStub
async def main(): async with Channel('127.0.0.1', 50051) as channel: greeter = GreeterStub(channel)
reply = await greeter.SayHello(HelloRequest(name='Dr. Strange'))
print(reply.message)
if name == 'main': asyncio.run(main())
Server
.. code-block:: python3
import asyncio
from grpclib.utils import graceful_exit from grpclib.server import Server
# generated by...
Read as markdown · JSON record · Source repository · Homepage
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
Pure-Python gRPC client and server implementation for asyncio applications, enabling asynchronous remote procedure calls without compiled dependencies.
Low friction installation with just two runtime dependencies (h2, multidict). Repository shows recent activity (last commit 2025-12-14) and 985 GitHub stars, though the project is aging with 242 days since the last release.
BSD-3-Clause is permissive and imposes minimal restrictions; you may use, modify, and distribute grpclib freely provided you retain the license notice and disclaimer.
Usage
pip install grpclib
import asyncio
from grpclib.client import Channel
async def main():
async with Channel('127.0.0.1', 50051) as channel:
# Use generated stub from protoc
pass
asyncio.run(main())
Requires Python >= 3.10. Code generation requires protoc compiler (via protobuf or grpcio-tools package, not runtime dependencies).
Verdict: Stable, permissively licensed pure-Python gRPC implementation suitable for asyncio projects. Low install friction and no known vulnerabilities, but maintenance is aging—last release was 242 days ago. Best for teams already committed to asyncio and protobuf workflows.
Needs verification
- Performance characteristics compared to grpcio in production workloads
- Completeness of gRPC feature coverage relative to the official implementation
- Community adoption rate and ecosystem maturity beyond the 985 GitHub stars
Similar packages
permissive · top 1,000 on PyPI
grpc-interceptorpermissive · top 1,000 on PyPI
grpcio-health-checkingpermissive · top 1,000 on PyPI
grpciopermissive · top 100 on PyPI
grpcio-statuspermissive · top 100 on PyPI
opentelemetry-exporter-otlp-proto-grpcpermissive · top 1,000 on PyPI
opentelemetry-exporter-otlp-proto-commonpermissive · top 1,000 on PyPI
types-protobufpermissive · top 1,000 on PyPI
hpackpermissive · top 1,000 on PyPI
h2permissive · top 1,000 on PyPI