Repid is a simple, fast, and extensible async task queue framework, with built-in AsyncAPI 3.0 schema generation.
Project description
repid
Repid is a simple, fast, and extensible async task queue framework, with built-in AsyncAPI 3.0 schema generation.
pip install repid
Features
-
AsyncAPI 3.0 out of the box - your schema is generated automatically as you build. No separate spec files to maintain, no drift between code and docs.
-
Broker flexibility - works with RabbitMQ, Redis, and Google Cloud Pub/Sub. Switch or run multiple brokers side by side without changing your actor code.
-
FastAPI-style ergonomics - define actors as plain async functions with dependency injection and Pydantic argument validation. If you know FastAPI, you already know Repid.
-
Built for testability - a drop-in
TestClientlets you test actors in-memory without a running broker, making unit tests fast and dependency-free.
Quickstart
Here is how the simplest producer-consumer application looks, using AMQP server.
Producer:
import asyncio
from repid import AmqpServer, Repid
app = Repid(title="My App", version="1.0.0")
app.servers.register_server(
"default",
AmqpServer("amqp://user:password@localhost:5672"),
is_default=True,
)
async def main() -> None:
async with app.servers.default.connection():
await app.send_message(
channel="default",
payload=b"",
headers={"topic": "awesome_job"},
)
asyncio.run(main())
Consumer:
import asyncio
from repid import AmqpServer, Repid, Router
app = Repid(title="My App", version="1.0.0")
app.servers.register_server(
"default",
AmqpServer("amqp://user:password@localhost:5672"),
is_default=True,
)
router = Router()
@router.actor
async def awesome_job() -> None:
print("Hello async jobs!")
await asyncio.sleep(1.0)
app.include_router(router)
async def main() -> None:
async with app.servers.default.connection():
await app.run_worker()
asyncio.run(main())
Check out user guide to learn more!
License
Repid is distributed under the terms of the MIT license. Please see License.md for more information.
Repid's logo is distributed under the terms of the CC BY-NC 4.0 license. It is originally created by ari_the_crow_.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repid-2.0.0a18.tar.gz.
File metadata
- Download URL: repid-2.0.0a18.tar.gz
- Upload date:
- Size: 345.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05fd569a7afc7c37e1a013650463848e63cecf517f3c7909bdca19cd893de678
|
|
| MD5 |
cafcfeee97d3a44a06e529e8ce10efa3
|
|
| BLAKE2b-256 |
b1e7ffc176da5f0aeb00b16536cb668a356c52e00b14c5b0e4f78c4839b42c57
|
File details
Details for the file repid-2.0.0a18-py3-none-any.whl.
File metadata
- Download URL: repid-2.0.0a18-py3-none-any.whl
- Upload date:
- Size: 160.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5069d043c586631f3735d1adbf3c33d752bc42d4ab256d7d78a757ddec0aaaf
|
|
| MD5 |
ae680673abc4bd0913aac684a6d28904
|
|
| BLAKE2b-256 |
5724af945ab0045b37e11aac3389f2fb709c875740396776a0ed9c57a12faa3b
|