Metadata-Version: 2.4
Name: vercel-workers
Version: 0.0.13
Summary: Python SDK for Vercel Workers
License-Expression: MIT
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.27.0
Requires-Dist: anyio>=4.0.0
Requires-Dist: python-dotenv
Requires-Dist: vercel>=0.3.7
Provides-Extra: dev
Requires-Dist: ruff~=0.15.1; extra == "dev"
Requires-Dist: pytest~=9.0.2; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: mypy~=1.19.0; extra == "dev"
Requires-Dist: basedpyright~=1.37.0; extra == "dev"
Requires-Dist: build>=1.3.0; extra == "dev"
Requires-Dist: twine>=6.2.0; extra == "dev"
Provides-Extra: celery
Requires-Dist: celery>=5.3.0; extra == "celery"
Provides-Extra: django
Requires-Dist: Django>=6.0.0; extra == "django"
Provides-Extra: dramatiq
Requires-Dist: dramatiq>=1.14.0; extra == "dramatiq"
Provides-Extra: examples
Requires-Dist: fastapi; extra == "examples"
Provides-Extra: all
Requires-Dist: vercel-workers[celery]; extra == "all"
Requires-Dist: vercel-workers[django]; extra == "all"
Requires-Dist: vercel-workers[dramatiq]; extra == "all"

# vercel-workers

Python SDK for Vercel Queues and Vercel Worker Services.

It includes:

- `send()` and `@subscribe` primitives for publishing and consuming queue messages
- adapters for Celery, Dramatiq, and Django tasks

## Install

```bash
pip install vercel-workers
```

Optional adapter extras:

```bash
pip install "vercel-workers[celery]"
pip install "vercel-workers[dramatiq]"
pip install "vercel-workers[django]"
```

## Worker Service deployment shape

`vercel.json`

```json
{
  "projectSettings": { "framework": "services" },
  "experimentalServices": {
    "web": {
      "framework": "fastapi",
      "entrypoint": "main.py",
      "routePrefix": "/"
    },
    "worker": {
      "type": "worker",
      "entrypoint": "worker.py",
      "topic": "default",
      "consumer": "default"
    }
  }
}
```

For worker services, `worker.py` should expose worker definitions (for example a `@subscribe` function, Celery `app`, or Dramatiq `broker`) and import task modules so handlers are registered.

## Examples

- `examples/basic`: FastAPI producer + `@subscribe` worker service
- `examples/celery`: Celery + worker service
- `examples/dramatiq`: Dramatiq adapter + worker service
- `examples/django`: Django tasks backend + queue callback route at `/api/queue/callback`

When running outside Vercel, set `VERCEL_QUEUE_TOKEN` (and optionally `VERCEL_QUEUE_BASE_URL`).
