[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DCWGFJ8DA71TA98KNFAJC7":3,"skill-same:01M6DCWGFJ8DA71TA98KNFAJC7":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6DCWGFJ8DA71TA98KNFAJC7","render-background-workers",null,"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\u002FSidekiq\u002FBullMQ\u002FAsynq\u002FOban 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.","zapabob\u002FSkills","zapabob","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F130830376?v=4","01M6DBMYZAGRTFQDSQYW3W764P","峯岸 亮","01M6DBMZ3GKDSJ01NZ9XTZD7JD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002F1d\u002F1d40fdf942ca83f0a648f20ababf140002cb9456229d0fbd84ce75291966d60c\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"workers","render background workers","async","redis","oban","trigger","key value","worker","bullmq","compute","shutdown","cron jobs","run","up","use","process","work","celery","choose","services","2026-11-10 10:12:30",false,"---\r\nname: render-background-workers\r\ndescription: >-\r\n  Sets up and configures background workers on Render for queue-based job\r\n  processing. Use when the user needs to process async jobs, consume from a\r\n  queue, run Celery\u002FSidekiq\u002FBullMQ\u002FAsynq\u002FOban workers, handle graceful\r\n  shutdown with SIGTERM, wire a worker to Key Value (Redis), or choose between\r\n  workers and cron jobs for background work.\r\n  Trigger terms: background worker, async jobs, queue consumer, Celery,\r\n  Sidekiq, BullMQ, Asynq, Oban, job processing, SIGTERM, graceful shutdown.\r\nlicense: MIT\r\ncompatibility: Render background worker services\r\nmetadata:\r\n  author: Render\r\n  version: \"1.0.0\"\r\n  category: compute\r\n---\r\n\r\n# Render Background Workers\r\n\r\nThis 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.\r\n\r\n## When to Use\r\n\r\n- Designing or debugging **queue-backed workers** (Celery, Sidekiq, BullMQ, Asynq, etc.)\r\n- Choosing between a **worker**, **Cron Job**, or **Workflow** for background work\r\n- Configuring **Render Key Value** as a **broker** (not a cache) with correct **eviction policy**\r\n- Implementing **graceful shutdown** so in-flight jobs are not lost on deploy\r\n\r\nPer-framework setup and signal-handling detail: `references\u002Fqueue-framework-setup.md`, `references\u002Fgraceful-shutdown.md`.\r\n\r\n## How Workers Work\r\n\r\n- **Long-running services** with **no inbound (HTTP) traffic**. Render does not expose a public URL or internal hostname for workers the way it does for web or private services—**workers cannot receive private network traffic directed at them**.\r\n- The typical pattern is a **poll loop**: the process connects to a **queue backend** (often **Render Key Value**, Redis-compatible **Valkey 8**) and **pulls jobs**.\r\n- Workers **can initiate outbound connections** on the private network—to **PostgreSQL**, **Key Value**, **private services**, **web services** (internal URLs), and the public internet—subject to your plan and firewall rules.\r\n\r\n## Queue Framework Overview\r\n\r\n| Framework | Language | Queue backend | Notes |\r\n|-----------|----------|---------------|--------|\r\n| Celery | Python | Redis \u002F Key Value | Most common Python task queue |\r\n| Sidekiq | Ruby | Redis \u002F Key Value | Standard for Rails |\r\n| BullMQ | Node.js | Redis \u002F Key Value | Modern Node queue (Redis-based) |\r\n| Asynq | Go | Redis \u002F Key Value | Go async task processing |\r\n| Oban | Elixir | **Postgres** (not Redis) | Queue stored in the database |\r\n\r\n## Pairing with Key Value\r\n\r\n- Use **Render Key Value** as the **job broker** when your framework expects Redis.\r\n- Set **maxmemory policy** to **`noeviction`**. **`allkeys-lru`** and similar policies are for **caches**; evicting queue keys **drops jobs**.\r\n- Wire **`REDIS_URL`** (or your framework’s equivalent) via **`fromService`** with `type: keyvalue` and `property: connectionString` in the Blueprint.\r\n- **Blueprints require `ipAllowList`** on Key Value—include the CIDRs that should reach the instance (often `[]` for private-network-only access; see **render-blueprints** \u002F Key Value field reference).\r\n\r\nSee `references\u002Fqueue-framework-setup.md` for minimal app + YAML examples.\r\n\r\n## Worker vs Cron vs Workflow\r\n\r\n| Need | Use | Why |\r\n|------|-----|-----|\r\n| Always-on queue consumer | **Background Worker** | Polls continuously; long-lived process |\r\n| Periodic scheduled task | **Cron Job** | Runs on a schedule, **exits**; **12h max** per run |\r\n| Distributed parallel compute | **Workflow** | Each run gets its own instance; fan-out patterns |\r\n| High-volume or bursty jobs | **Workflow** | Scales per run; **no idle instance cost** between runs |\r\n\r\n## Graceful Shutdown\r\n\r\n- Before stopping an instance, Render sends **`SIGTERM`**, then waits up to **`maxShutdownDelaySeconds`** (**1–300**, **default 30**) before **`SIGKILL`**.\r\n- Workers should: **(1)** stop accepting new jobs, **(2)** finish the current job or **checkpoint** progress, **(3)** close connections, **(4)** exit **0**.\r\n- Set **`maxShutdownDelaySeconds`** to at least your **longest safe job duration** (see Dashboard or Blueprint).\r\n\r\nLanguage- and framework-specific handlers: `references\u002Fgraceful-shutdown.md`.\r\n\r\n## Blueprint Configuration\r\n\r\nMinimal pattern: **`type: worker`**, **`runtime`**, **`buildCommand`**, **`startCommand`**, and **`envVars`** wired from Key Value.\r\n\r\n```yaml\r\nservices:\r\n  - type: keyvalue\r\n    name: jobs\r\n    plan: starter\r\n    region: oregon\r\n    ipAllowList: []\r\n\r\n  - type: worker\r\n    name: task-worker\r\n    runtime: python\r\n    region: oregon\r\n    plan: starter\r\n    buildCommand: pip install -r requirements.txt\r\n    startCommand: celery -A tasks worker --loglevel=info\r\n    envVars:\r\n      - key: REDIS_URL\r\n        fromService:\r\n          name: jobs\r\n          type: keyvalue\r\n          property: connectionString\r\n```\r\n\r\nOptional: **`maxShutdownDelaySeconds`** on the worker service for longer draining jobs.\r\n\r\n## References\r\n\r\n| Topic | File |\r\n|--------|------|\r\n| Celery, Sidekiq, BullMQ, Asynq, Oban setup + YAML | `references\u002Fqueue-framework-setup.md` |\r\n| SIGTERM, `maxShutdownDelaySeconds`, per-language patterns | `references\u002Fgraceful-shutdown.md` |\r\n\r\n## Related Skills\r\n\r\n- **render-deploy** — First deploy, CLI, service creation\r\n- **render-blueprints** — Full `render.yaml` schema, `fromService`, projects\r\n- **render-networking** — Private URLs, what can call what\r\n- **render-scaling** — Worker plans, instance counts, limits\r\n","# Render Background Workers\r\n\r\nThis 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.\r\n\r\n## When to Use\r\n\r\n- Designing or debugging **queue-backed workers** (Celery, Sidekiq, BullMQ, Asynq, etc.)\r\n- Choosing between a **worker**, **Cron Job**, or **Workflow** for background work\r\n- Configuring **Render Key Value** as a **broker** (not a cache) with correct **eviction policy**\r\n- Implementing **graceful shutdown** so in-flight jobs are not lost on deploy\r\n\r\nPer-framework setup and signal-handling detail: `references\u002Fqueue-framework-setup.md`, `references\u002Fgraceful-shutdown.md`.\r\n\r\n## How Workers Work\r\n\r\n- **Long-running services** with **no inbound (HTTP) traffic**. Render does not expose a public URL or internal hostname for workers the way it does for web or private services—**workers cannot receive private network traffic directed at them**.\r\n- The typical pattern is a **poll loop**: the process connects to a **queue backend** (often **Render Key Value**, Redis-compatible **Valkey 8**) and **pulls jobs**.\r\n- Workers **can initiate outbound connections** on the private network—to **PostgreSQL**, **Key Value**, **private services**, **web services** (internal URLs), and the public internet—subject to your plan and firewall rules.\r\n\r\n## Queue Framework Overview\r\n\r\n| Framework | Language | Queue backend | Notes |\r\n|-----------|----------|---------------|--------|\r\n| Celery | Python | Redis \u002F Key Value | Most common Python task queue |\r\n| Sidekiq | Ruby | Redis \u002F Key Value | Standard for Rails |\r\n| BullMQ | Node.js | Redis \u002F Key Value | Modern Node queue (Redis-based) |\r\n| Asynq | Go | Redis \u002F Key Value | Go async task processing |\r\n| Oban | Elixir | **Postgres** (not Redis) | Queue stored in the database |\r\n\r\n## Pairing with Key Value\r\n\r\n- Use **Render Key Value** as the **job broker** when your framework expects Redis.\r\n- Set **maxmemory policy** to **`noeviction`**. **`allkeys-lru`** and similar policies are for **caches**; evicting queue keys **drops jobs**.\r\n- Wire **`REDIS_URL`** (or your framework’s equivalent) via **`fromService`** with `type: keyvalue` and `property: connectionString` in the Blueprint.\r\n- **Blueprints require `ipAllowList`** on Key Value—include the CIDRs that should reach the instance (often `[]` for private-network-only access; see **render-blueprints** \u002F Key Value field reference).\r\n\r\nSee `references\u002Fqueue-framework-setup.md` for minimal app + YAML examples.\r\n\r\n## Worker vs Cron vs Workflow\r\n\r\n| Need | Use | Why |\r\n|------|-----|-----|\r\n| Always-on queue consumer | **Background Worker** | Polls continuously; long-lived process |\r\n| Periodic scheduled task | **Cron Job** | Runs on a schedule, **exits**; **12h max** per run |\r\n| Distributed parallel compute | **Workflow** | Each run gets its own instance; fan-out patterns |\r\n| High-volume or bursty jobs | **Workflow** | Scales per run; **no idle instance cost** between runs |\r\n\r\n## Graceful Shutdown\r\n\r\n- Before stopping an instance, Render sends **`SIGTERM`**, then waits up to **`maxShutdownDelaySeconds`** (**1–300**, **default 30**) before **`SIGKILL`**.\r\n- Workers should: **(1)** stop accepting new jobs, **(2)** finish the current job or **checkpoint** progress, **(3)** close connections, **(4)** exit **0**.\r\n- Set **`maxShutdownDelaySeconds`** to at least your **longest safe job duration** (see Dashboard or Blueprint).\r\n\r\nLanguage- and framework-specific handlers: `references\u002Fgraceful-shutdown.md`.\r\n\r\n## Blueprint Configuration\r\n\r\nMinimal pattern: **`type: worker`**, **`runtime`**, **`buildCommand`**, **`startCommand`**, and **`envVars`** wired from Key Value.\r\n\r\n```yaml\r\nservices:\r\n  - type: keyvalue\r\n    name: jobs\r\n    plan: starter\r\n    region: oregon\r\n    ipAllowList: []\r\n\r\n  - type: worker\r\n    name: task-worker\r\n    runtime: python\r\n    region: oregon\r\n    plan: starter\r\n    buildCommand: pip install -r requirements.txt\r\n    startCommand: celery -A tasks worker --loglevel=info\r\n    envVars:\r\n      - key: REDIS_URL\r\n        fromService:\r\n          name: jobs\r\n          type: keyvalue\r\n          property: connectionString\r\n```\r\n\r\nOptional: **`maxShutdownDelaySeconds`** on the worker service for longer draining jobs.\r\n\r\n## References\r\n\r\n| Topic | File |\r\n|--------|------|\r\n| Celery, Sidekiq, BullMQ, Asynq, Oban setup + YAML | `references\u002Fqueue-framework-setup.md` |\r\n| SIGTERM, `maxShutdownDelaySeconds`, per-language patterns | `references\u002Fgraceful-shutdown.md` |\r\n\r\n## Related Skills\r\n\r\n- **render-deploy** — First deploy, CLI, service creation\r\n- **render-blueprints** — Full `render.yaml` schema, `fromService`, projects\r\n- **render-networking** — Private URLs, what can call what\r\n- **render-scaling** — Worker plans, instance counts, limits\r\n",{"name":5,"license":15,"metadata":44,"description":7,"compatibility":47},{"author":45,"version":46,"category":28},"Render","1.0.0","Render background worker services","main","0d1434f89f4bc6b07e9d272accd8c1013768820f","archive\u002Fskill-md-reviewed\u002Fsha256\u002F1d\u002F1d40fdf942ca83f0a648f20ababf140002cb9456229d0fbd84ce75291966d60c",0,"https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills","https:\u002F\u002Fgithub.com\u002Fzapabob","The Open University of JAPAN　2019-now\r\n\r\nTokyo University of Science　2007-2010","2026-10-26 16:29:01",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add zapabob\u002FSkills --skill render-background-workers",{"tool":62,"command":63},"bunx","bunx skills add zapabob\u002FSkills --skill render-background-workers",{"tool":65,"command":66},"pnpm","pnpm dlx skills add zapabob\u002FSkills --skill render-background-workers","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002F1d\u002F1d40fdf942ca83f0a648f20ababf140002cb9456229d0fbd84ce75291966d60c\u002FSKILL.md",true,[],[71,109,144,170,197,214],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":90,"publishedAt":39},"01M6GJTE1GESGGF9K028Y7753E","xurl","X\u002FTwitter via xurl CLI: post, search, DM, media, v2 API.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fxurl\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[77,82,85],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[73,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,48,106,107,108],"openclaw","macos","cli","github","linux","windows","official","search","https","social-media","api","Media","hermes","hermes agent","twitter","social","via","post",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":126,"publishedAt":39},"01M6GJT8S1PXQ8WPXT1HSNBWH2","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwriting-plans\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[115,118,121,122,123],{"categoryNo":116,"categoryName":117,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":119,"categoryName":120,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":124,"categoryName":125,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000036","内容创作者",[127,128,129,130,92,131,95,132,96,133,134,135,136,137,138,139,140,141,142,143],"writing","writing plans","plans","design","review","workflow","documentation","tasks","development","code","planning","code-review","subagent","write","superpowers","paths","test-driven-development",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":153,"publishedAt":39},"01M6GJST0H5X7WHBJ3BZK0DVKH","whisper","OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast transcription, or multilingual audio processing. Best for robust, multilingual ASR.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwhisper\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[150],{"categoryNo":151,"categoryName":152,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000016","图像与多媒体",[146,92,95,154,155,156,157,158,159,160,161,162,33,163,164,165,166,167,168,169],"openai","speech","multimodal","Transformers","ASR","Audio","text","model","speech recognition","general","multilingual","translation","english","identification","processing","Audio Processing",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":179,"publishedAt":39},"01M6GJSMRQ8EETZTYMG72P70EA","weights-and-biases","W&B: log ML experiments, sweeps, model registry, dashboards.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fweights-and-biases\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[176],{"categoryNo":177,"categoryName":178,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000013","分析与可视化",[180,92,181,182,96,183,184,185,186,187,188,161,189,190,191,192,193,194,195,196],"weights and biases","tensorflow","experiments","pytorch","visualization","registry","real-time","tuning","dashboards","experiment","log","time","Experiment Tracking","Model Registry","Hyperparameter Tuning","WandB","Real-Time Visualization",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":204,"publishedAt":39},"01M6GJS19KDPRY112JTR326S06","watchers","Poll RSS, JSON APIs, and GitHub with watermark dedup.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwatchers\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[203],{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},[199,92,205,94,95,206,207,208,209,210,211,103,104,212,213],"terminal","automation","http","monitoring","cron","json","rss","devops","with",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":222,"publishedAt":39},"01M6GJRHJD2A6Q830SWF9W48BC","serving-llms-vllm","vLLM: high-throughput LLM serving, OpenAI API, quantization.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fvllm\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[220,221],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[223,224,225,95,226,154,227,228,229,157,230,101,231,232,233,234,235,236,237,238],"llms","vLLM","serving llms vllm","research","openai api","tensor","Inference Serving","Production","llm serving","High Throughput","PagedAttention","Continuous Batching","Quantization","Tensor Parallelism","high-throughput","throughput"]