skills/render-background-workers/SKILL.md
Sets up and configures background workers on Render for queue-based job processing. Use when the user needs to process async jobs, consume from a queue, run Celery/Sidekiq/BullMQ/Asynq/Oban workers, handle graceful shutdown with SIGTERM, wire a worker to Key Value (Redis), or choose between workers and cron jobs for background work. Trigger terms: background worker, async jobs, queue consumer, Celery, Sidekiq, BullMQ, Asynq, Oban, job processing, SIGTERM, graceful shutdown.
npx skillsauth add render-oss/skills render-background-workersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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, projectsdevelopment
Configures Render web services—port binding, TLS, health checks, custom domains, auto-deploy, PR previews, persistent disks, and deploy lifecycle. Use when the user needs to set up a web service, fix health check failures, add a custom domain, configure zero-downtime deploys, or troubleshoot port binding issues.
development
Deploys and configures static sites on Render's global CDN—build commands, publish paths, SPA routing, redirects, custom headers, and PR previews. Use when the user needs to deploy a static site, set up a React/Vue/Hugo/Gatsby frontend, configure SPA fallback routing, add redirect rules, customize response headers, or choose between a static site and a web service for their frontend. Trigger terms: static site, CDN, SPA, single-page app, React deploy, Vue deploy, Hugo, Gatsby, Docusaurus, Jekyll, staticPublishPath.
tools
Scales Render services—configures autoscaling targets, chooses instance types, sets manual instance counts, and optimizes cost. Use when the user needs to handle more traffic, set up autoscaling, pick the right instance type, reduce costs, or troubleshoot scaling behavior like slow scale-down or stuck instances.
development
Configures Render private services—internal-only apps that accept traffic exclusively from other Render services over the private network. Use when the user needs an internal API, microservice, gRPC server, sidecar, or any service that should not be publicly accessible. Also use when choosing between a private service and a background worker. Trigger terms: private service, pserv, internal service, internal API, microservice, gRPC, not public, private network service.