Skip to content

Features

Everything celery-manager does, in plain words. Each feature says what it is for, how you use it, and where to read the details.

Two pieces do most of the work, so it helps to know them first:

  • The events listener (celery-manager events) watches Celery and records every task run. Most of what you see in the dashboard comes from it, with no change to your tasks.
  • The @track decorator is optional, per task. Add it when you want log capture, live progress, or the ability to skip and pause scheduled runs. Without it, a scheduled task always runs.

See what your tasks are doing

Task list. Every run of every task, newest first, with its status, runtime and start time. Filter by status, search by task name, ID or arguments, pick a date range, or group runs by task. In the dashboard: Tasks. Read more

Task detail. One run in full: arguments, worker, queue, timings, and for a failure, the exception and traceback first. Retries link back to the run they came from. In the dashboard: click any run. Read more

Log capture. Log lines your task writes while it runs are saved with that run and shown on its page. Needs @track. Read more

Live progress. Call report_progress(current, total, message) inside a long task and watch a progress bar, elapsed time and an estimated finish while it runs. Needs @track. Read more

Workflows. When a run is part of a chain, group or chord, its page shows the whole workflow as a tree, so you can see which step failed. In the dashboard: the Workflow card on a run's page. Read more

Live updates. The task list and run pages update by themselves within about a second. The Live badge in the header shows the connection is up. Nothing to set up. Read more

Act on tasks

Start a task. Pick any registered task, fill in its arguments (defaults are prefilled from the function), and optionally choose a queue or a delay. In the dashboard: Start task on the task list. Read more

Cancel or terminate. Cancel stops a run that hasn't started yet. Terminate also kills one that is already running. In the dashboard: the buttons on a run's page.

Retry. Run a failed task again with the same arguments, or use Retry with changes to edit them first. Select several failed runs to retry them together.

Dead letters. Runs that failed after their last retry, in one list, grouped by task and exception. Fix the arguments and run one or many again. Read more

Bulk cancel. Cancel the runs you've selected, or every waiting or running task that matches your current filters. You see the count before you confirm. Read more

Control periodic tasks (beat schedules)

All of these need @track on the task. celery-manager doesn't change your beat schedule: beat still sends the task, and @track makes it skip. Run beat with -S celery_manager.beat:Scheduler so each firing carries its scheduled time and a skip applies only to that firing.

Skip one upcoming run. Open a schedule to see its next runs, and skip or cancel just one of them. The rest of the schedule carries on as normal. This is what celery-manager was built for. In the dashboard: Schedules, then a schedule's name. Read more

Pause a whole schedule. Stop a schedule from running until you resume it, or until a time you choose (1 hour, tomorrow 9:00, or a custom time). Resuming picks up from now: it doesn't catch up on the runs it missed. In the dashboard: Pause schedule on the Schedules page. Read more

Edit a schedule. Change a schedule's crontab or interval from the dashboard, see its next five runs before you save, and revert to the schedule in your code at any time. Needs beat to run celery_manager.beat:DatabaseScheduler and schedule_editing=True. In the dashboard: Edit schedule on a schedule's page. Read more

Maintenance windows. Skip chosen schedules, or all of them, on a recurring window such as every Sunday from 02:00 for two hours, in any timezone. Runs inside the window are recorded as skipped with the reason; there is nothing to resume afterwards. In the dashboard: Schedules, under the schedule list. Read more

Missed runs. A scheduled run that was due but never arrived (beat was down, the message was lost) is listed on the schedule's page and counted on the schedule list, instead of going unnoticed. In the dashboard: Schedules, then a schedule's name. Read more

Insights. How many runs, how many succeeded, and how long they take (median and p95), over the last hour, day, week or month. In the dashboard: Insights. Read more

A page per task. The same numbers and charts for one task, plus its recent runs and most common errors. In the dashboard: click a task name in Insights or on a run's page. Read more

Grouped failures. Failures with the same cause are grouped together, even when the messages differ slightly (an ID or a number), so a flood of errors shows up as one problem. Retry a whole group at once. In the dashboard: Insights, then Failures. Read more

Run your workers and queues

Workers. Every worker that is online: what it's running now, how many tasks it has processed, and which queues it reads from. From here you can shut a worker down, add or remove a pool process, and start or stop reading from a queue. In the dashboard: Workers. Read more

Rate limits. Change how often a task may start, on the running workers, without a deploy. The change lasts until a worker restarts. In the dashboard: the Rate limits table on the Workers page. Read more

Queues. How many messages are waiting in each queue right now, and how many workers read from it. In the dashboard: Queues. Read more

Purge a queue. Delete every waiting message in one queue. You type the queue name to confirm. Read more

Data retention. Delete runs and their logs after a number of days you choose, per task, so the database does not grow forever. Off until you set it. In the dashboard: Settings. Read more

Metrics. A /metrics endpoint in the Prometheus format, with run counts, runtimes, failure ratios, queue depth, workers online and missed runs, plus an optional OpenTelemetry export. Protected by a token you choose. Read more

Know when something goes wrong

Alerts. A message to Slack, a webhook or email when a task's failure rate jumps, a queue backs up, a worker goes offline, or a periodic task misses its run. Rules are set per task, queue, worker or schedule (or a pattern), with a quiet period so one incident sends one message, and a "resolved" message when it's over. In the dashboard: Alerts. Read more

Share and keep what you find

Links to a view. Your filters are part of the page address, so Copy link gives a teammate exactly what you're looking at.

Saved views. Save a set of filters under a name and come back to it later. Saved in your browser. Read more

Export. Download every run that matches your filters as CSV or JSON. Read more

Audit log. Every action taken from the dashboard (cancel, retry, pause, purge, start, and so on) with who did it and when. In the dashboard: Audit log. Read more

Set it up your way

Works with your framework. Mount the dashboard into a FastAPI, Flask or Django project, or run it on its own. Read more

Any database. SQLite by default, or PostgreSQL, MySQL and anything else SQLAlchemy supports, through db_url. Read more

Upgrades handle themselves. When a new version changes the database, it updates the tables when it starts. If you'd rather do that as a deploy step, run celery-manager migrate. Read more

Sign-in. Dashboard users with hashed passwords and session cookies. There is no default account: you create the first one yourself. Read more

Sign in with your app's users. Mounted in Django, Flask or FastAPI, the dashboard can let your app's own users in and take their role from your app (Django staff and superusers out of the box), with no second set of accounts. Read more

Roles. Give each account viewer (look, don't touch), operator (retry, cancel, pause, worker controls) or admin (also purge queues, shut down workers, change branding). The server enforces it; the dashboard hides what you can't use. Read more

Manage users in the dashboard. Admins add accounts, change roles, reset passwords and delete accounts from the Users page; everyone can change their own password. A password change signs that account out everywhere else. Read more

Themes and branding. Light, dark or follow the system, chosen per browser. Set the product name, accent colour and logo once for everyone. In the dashboard: Settings. Read more

A REST API for everything. Every action in the dashboard is also an API call, so you can script it. Read more