{"id":13502995,"url":"https://github.com/rusty-celery/rusty-celery","last_synced_at":"2026-03-27T02:44:31.765Z","repository":{"id":38312135,"uuid":"232664662","full_name":"rusty-celery/rusty-celery","owner":"rusty-celery","description":"🦀 Rust implementation of Celery for producing and consuming background tasks","archived":false,"fork":false,"pushed_at":"2024-06-17T09:58:55.000Z","size":2285,"stargazers_count":769,"open_issues_count":56,"forks_count":86,"subscribers_count":16,"default_branch":"main","last_synced_at":"2024-10-29T18:47:12.880Z","etag":null,"topics":["celery","celery-workers","rabbitmq","redis","rust"],"latest_commit_sha":null,"homepage":"https://rusty-celery.github.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rusty-celery.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-08T21:36:10.000Z","updated_at":"2024-10-22T02:14:59.000Z","dependencies_parsed_at":"2022-08-17T15:55:25.775Z","dependency_job_id":"8f389c7a-76cf-413e-b31e-aa8028571789","html_url":"https://github.com/rusty-celery/rusty-celery","commit_stats":{"total_commits":382,"total_committers":23,"mean_commits":"16.608695652173914","dds":"0.17801047120418845","last_synced_commit":"1a0168f4b4b521c891fcfc853c21fc30de12c2f2"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rusty-celery%2Frusty-celery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rusty-celery%2Frusty-celery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rusty-celery%2Frusty-celery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rusty-celery%2Frusty-celery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rusty-celery","download_url":"https://codeload.github.com/rusty-celery/rusty-celery/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246190165,"owners_count":20737985,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","celery-workers","rabbitmq","redis","rust"],"created_at":"2024-07-31T22:02:32.944Z","updated_at":"2025-12-12T13:53:29.078Z","avatar_url":"https://github.com/rusty-celery.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n    \u003cbr\u003e\n    \u003cimg src=\"img/rusty-celery-logo-transparent.png\"/\u003e\n    \u003cbr\u003e\n    \u003cbr\u003e\n    \u003cp\u003e\n    A Rust implementation of \u003ca href=\"https://github.com/celery/celery\"\u003eCelery\u003c/a\u003e for producing and consuming asynchronous tasks with a distributed message queue.\n    \u003c/p\u003e\n    \u003chr/\u003e\n\u003c/div\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/rusty-celery/rusty-celery/actions\"\u003e\n        \u003cimg alt=\"Build\" src=\"https://github.com/rusty-celery/rusty-celery/workflows/CI/badge.svg?event=push\u0026branch=main\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/rusty-celery/rusty-celery/blob/main/LICENSE\"\u003e\n        \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/rusty-celery/rusty-celery.svg?color=blue\u0026cachedrop\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/celery\"\u003e\n        \u003cimg alt=\"Crates\" src=\"https://img.shields.io/crates/v/celery.svg?color=blue\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://docs.rs/celery/\"\u003e\n        \u003cimg alt=\"Docs\" src=\"https://img.shields.io/badge/docs.rs-API%20docs-blue\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/rusty-celery/rusty-celery/issues?q=is%3Aissue+is%3Aopen+label%3A%22Status%3A+Help+Wanted%22\"\u003e\n        \u003cimg alt=\"Help wanted\" src=\"https://img.shields.io/github/issues/rusty-celery/rusty-celery/Status%3A%20Help%20Wanted?label=Help%20Wanted\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n\nWe welcome contributions from everyone regardless of your experience level with Rust. For complete beginners, see [HACKING_QUICKSTART.md](https://github.com/rusty-celery/rusty-celery/blob/main/HACKING_QUICKSTART.md).\n\nIf you already know the basics of Rust but are new to Celery, check out the [Rusty Celery Book](https://rusty-celery.github.io/) or the original Python [Celery Project](http://www.celeryproject.org/).\n\n## Quick start\n\nDefine tasks by decorating functions with the [`task`](https://docs.rs/celery/*/celery/attr.task.html) attribute.\n\n```rust\nuse celery::prelude::*;\n\n#[celery::task]\nfn add(x: i32, y: i32) -\u003e TaskResult\u003ci32\u003e {\n    Ok(x + y)\n}\n```\n\nCreate an app with the [`app`](https://docs.rs/celery/*/celery/macro.celery_app.html) macro\nand register your tasks with it:\n\n```rust\nlet my_app = celery::app!(\n    broker = AMQPBroker { std::env::var(\"AMQP_ADDR\").unwrap() },\n    tasks = [add],\n    task_routes = [\n        \"*\" =\u003e \"celery\",\n    ],\n).await?;\n```\n\nThen send tasks to a queue with\n\n```rust\nmy_app.send_task(add::new(1, 2)).await?;\n```\n\nAnd consume tasks as a worker from a queue with\n\n```rust\nmy_app.consume().await?;\n```\n\n## Examples\n\nThe [`examples/`](https://github.com/rusty-celery/rusty-celery/tree/main/examples) directory contains:\n\n- a simple Celery app implemented in Rust using an AMQP broker ([`examples/celery_app.rs`](https://github.com/rusty-celery/rusty-celery/blob/main/examples/celery_app.rs)),\n- the same Celery app implemented in Python ([`examples/celery_app.py`](https://github.com/rusty-celery/rusty-celery/blob/main/examples/celery_app.py)),\n- and a Beat app implemented in Rust ([`examples/beat_app.rs`](https://github.com/rusty-celery/rusty-celery/blob/main/examples/beat_app.rs)).\n\n### Prerequisites\n\nIf you already have an AMQP broker running you can set the environment variable `AMQP_ADDR` to your broker's URL (e.g., `amqp://localhost:5672//`, where\nthe second slash at the end is the name of the [default vhost](https://www.rabbitmq.com/access-control.html#default-state)).\nOtherwise simply run the helper script:\n\n```bash\n./scripts/brokers/amqp.sh\n```\n\nThis will download and run the official [RabbitMQ](https://www.rabbitmq.com/) image (RabbitMQ is a popular AMQP broker).\n\n### Run the examples\n\n![](./img/demo.gif)\n\n#### Run Rust Celery app\n\nYou can consume tasks with:\n\n```bash\ncargo run --example celery_app consume\n```\n\nAnd you can produce tasks with:\n\n```bash\ncargo run --example celery_app produce [task_name]\n```\n\nCurrent supported tasks for this example are: `add`, `buggy_task`, `long_running_task` and `bound_task`\n\n#### Run Python Celery app\n\nSimilarly, you can consume or produce tasks from Python by running\n\n\n```bash\npython examples/celery_app.py consume [task_name]\n```\n\nor\n\n```bash\npython examples/celery_app.py produce\n```\n\nYou'll need to have Python 3 installed, along with the requirements listed in the `requirements.txt` file.  You'll also have to provide a task name. This example implements 4 tasks: `add`, `buggy_task`, `long_running_task` and `bound_task`\n\n#### Run Rust Beat app\n\nYou can start the Rust beat with:\n\n```bash\ncargo run --example beat_app\n```\n\nAnd then you can consume tasks from Rust or Python as explained above.\n\n## Road map and current state\n\n✅ = Supported and mostly stable, although there may be a few incomplete features.\u003cbr/\u003e\n⚠️ = Partially implemented and under active development.\u003cbr/\u003e\n🔴 = Not supported yet but on-deck to be implemented soon.\n\n### Core\n\n|                  | Status  | Tracking  |\n| ---------------- |:-------:| --------- |\n| Protocol         | ⚠️      | [![](https://img.shields.io/github/issues/rusty-celery/rusty-celery/Protocol%20Feature?label=Issues)](https://github.com/rusty-celery/rusty-celery/issues?q=is%3Aissue+label%3A%22Protocol+Feature%22+is%3Aopen) |\n| Producers        | ✅      | |\n| Consumers        | ✅      | |\n| Brokers          | ✅      | |\n| Beat             | ✅      | |\n| Backends         | 🔴      | |\n| [Baskets](https://github.com/rusty-celery/rusty-celery/issues/53) | 🔴      | |\n\n### Brokers\n\n|       | Status | Tracking |\n| ----- |:------:| -------- |\n| AMQP  | ✅     | [![](https://img.shields.io/github/issues/rusty-celery/rusty-celery/Broker%3A%20AMQP?label=Issues)](https://github.com/rusty-celery/rusty-celery/labels/Broker%3A%20AMQP) |\n| Redis | ✅     | [![](https://img.shields.io/github/issues/rusty-celery/rusty-celery/Broker%3A%20Redis?label=Issues)](https://github.com/rusty-celery/rusty-celery/labels/Broker%3A%20Redis) |\n\n### Backends\n\n|             | Status | Tracking |\n| ----------- |:------:| -------- |\n| RPC         | 🔴     | [![](https://img.shields.io/github/issues/rusty-celery/rusty-celery/Backend%3A%20RPC?label=Issues)](https://github.com/rusty-celery/rusty-celery/labels/Backend%3A%20RPC) |\n| Redis       | 🔴     | [![](https://img.shields.io/github/issues/rusty-celery/rusty-celery/Backend%3A%20Redis?label=Issues)](https://github.com/rusty-celery/rusty-celery/labels/Backend%3A%20Redis) |\n","funding_links":[],"categories":["Rust","Implementation in different languages"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frusty-celery%2Frusty-celery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frusty-celery%2Frusty-celery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frusty-celery%2Frusty-celery/lists"}