# `Celery.Worker.Control`
[🔗](https://github.com/hacktobeer/celery-elixir/blob/v0.1.0/lib/celery/worker/control.ex#L1)

Remote control and inspection commands for Celery workers over `Kombu.Pidbox`
(ported from `celery.worker.control` and `celery.app.control`).

Supports standard Celery control/inspect methods:
- `ping` -> `%{"ok" => "pong"}`
- `registered` -> list of registered task names
- `active` -> list of currently executing task request info maps
- `reserved` -> list of prefetched/reserved task request info maps
- `scheduled` -> list of ETA-scheduled task maps
- `revoked` -> list of revoked task IDs
- `stats` -> worker statistics dictionary
- `revoke` -> revokes one or more `task_id`s

# `broadcast`

```elixir
@spec broadcast(Celery.t() | Celery.Config.t(), String.t(), map(), keyword()) ::
  :ok | {:ok, list()} | {:error, term()}
```

Broadcasts a control/inspect command to workers via `Kombu.Pidbox`.

# `build_handlers`

```elixir
@spec build_handlers(pid(), Celery.t()) :: %{
  required(String.t()) =&gt; (term(), map() -&gt; term())
}
```

Builds the handler map used by a `Celery.Worker`'s `Kombu.Pidbox.Node` to respond to
remote control and inspect requests from Python or Elixir Celery clients.

# `mailbox`

```elixir
@spec mailbox(Celery.t() | Celery.Config.t()) :: Kombu.Pidbox.Mailbox.t()
```

Creates a `%Kombu.Pidbox.Mailbox{}` for the given `%Celery{}` or `%Celery.Config{}`.

# `ping`

```elixir
@spec ping(Celery.t() | Celery.Config.t(), keyword()) ::
  {:ok, list()} | {:error, term()}
```

Pings active workers via `Kombu.Pidbox` and collects replies.

# `revoke`

```elixir
@spec revoke(Celery.t() | Celery.Config.t(), String.t() | [String.t()], keyword()) ::
  :ok | {:ok, list()} | {:error, term()}
```

Broadcasts a `revoke` command for `task_id` (or a list of task IDs) to workers.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
