From render
Configures Render background workers for queue-based async job processing using Celery, Sidekiq, BullMQ, Asynq, Oban. Covers graceful shutdown with SIGTERM, Redis Key Value as broker with noeviction policy, and workers vs cron jobs.
npx claudepluginhub render-oss/skills --plugin renderThis skill uses the workspace's default tool permissions.
This skill explains **worker** services on Render: processes that **consume jobs from a queue** instead of serving HTTP. Pair with **render-blueprints**, **render-env-vars**, and **render-networking** when wiring `render.yaml` and private connectivity.
Generates background worker code and configurations for Node.js, Python, Go backends, covering database design, caching, messaging, and microservices architecture.
Provides patterns for reliable background job processing with message queues, worker pools, retries, dead letter handling, and async orchestration. Grounds advice in reference files; activates on queue worker mentions.
Provides async job processing patterns with Celery, ARQ, Redis, and Temporal for background tasks, workflows, scheduling, retries, rate limiting, and monitoring. Use for task queues and distributed execution.
Share bugs, ideas, or general feedback.
This skill explains worker services on Render: processes that consume jobs from a queue instead of serving HTTP. Pair with render-blueprints, render-env-vars, and render-networking when wiring render.yaml and private connectivity.
Per-framework setup and signal-handling detail: references/queue-framework-setup.md, references/graceful-shutdown.md.
| Framework | Language | Queue backend | Notes |
|---|---|---|---|
| Celery | Python | Redis / Key Value | Most common Python task queue |
| Sidekiq | Ruby | Redis / Key Value | Standard for Rails |
| BullMQ | Node.js | Redis / Key Value | Modern Node queue (Redis-based) |
| Asynq | Go | Redis / Key Value | Go async task processing |
| Oban | Elixir | Postgres (not Redis) | Queue stored in the database |
noeviction. allkeys-lru and similar policies are for caches; evicting queue keys drops jobs.REDIS_URL (or your framework’s equivalent) via fromService with type: keyvalue and property: connectionString in the Blueprint.ipAllowList on Key Value—include the CIDRs that should reach the instance (often [] for private-network-only access; see render-blueprints / Key Value field reference).See references/queue-framework-setup.md for minimal app + YAML examples.
| Need | Use | Why |
|---|---|---|
| Always-on queue consumer | Background Worker | Polls continuously; long-lived process |
| Periodic scheduled task | Cron Job | Runs on a schedule, exits; 12h max per run |
| Distributed parallel compute | Workflow | Each run gets its own instance; fan-out patterns |
| High-volume or bursty jobs | Workflow | Scales per run; no idle instance cost between runs |
SIGTERM, then waits up to maxShutdownDelaySeconds (1–300, default 30) before SIGKILL.maxShutdownDelaySeconds to at least your longest safe job duration (see Dashboard or Blueprint).Language- and framework-specific handlers: references/graceful-shutdown.md.
Minimal pattern: type: worker, runtime, buildCommand, startCommand, and envVars wired from Key Value.
services:
- type: keyvalue
name: jobs
plan: starter
region: oregon
ipAllowList: []
- type: worker
name: task-worker
runtime: python
region: oregon
plan: starter
buildCommand: pip install -r requirements.txt
startCommand: celery -A tasks worker --loglevel=info
envVars:
- key: REDIS_URL
fromService:
name: jobs
type: keyvalue
property: connectionString
Optional: maxShutdownDelaySeconds on the worker service for longer draining jobs.
| Topic | File |
|---|---|
| Celery, Sidekiq, BullMQ, Asynq, Oban setup + YAML | references/queue-framework-setup.md |
SIGTERM, maxShutdownDelaySeconds, per-language patterns | references/graceful-shutdown.md |
render.yaml schema, fromService, projects