轩辕镜像
轩辕镜像专业版
个人中心搜索镜像
交易
充值流量我的订单
工具
工单支持镜像收录Run 助手IP 归属地密码生成Npm 源Pip 源
帮助
常见问题我要吐槽
其他
关于我们网站地图

官方QQ群: 13763429

轩辕镜像
镜像详情
graphile/worker
官方博客使用教程热门镜像工单支持
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。
轩辕镜像 - 国内开发者首选的专业 Docker 镜像下载加速服务平台 - 官方QQ群:13763429 👈点击免费获得技术支持。
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

worker Docker 镜像下载 - 轩辕镜像

worker 镜像详细信息和使用指南

worker 镜像标签列表和版本信息

worker 镜像拉取命令和加速下载

worker 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

worker
graphile/worker

worker 镜像详细信息

worker 镜像标签列表

worker 镜像使用说明

worker 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

高性能Node.js/PostgreSQL任务队列,支持在后台运行各类任务(如发送邮件、生成PDF等),避免阻塞主应用,适用于任何PostgreSQL支持的应用。
1 收藏0 次下载activegraphile镜像
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源
中文简介版本下载
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源

worker 镜像详细说明

worker 使用指南

worker 配置说明

worker 官方文档

graphile-worker 镜像文档

镜像概述

graphile-worker 是一个基于 Node.js 和 PostgreSQL 的高性能任务队列,允许在后台运行各类任务(如发送邮件、执行计算、生成PDF等),避免阻塞HTTP响应或应用代码。它可与任何PostgreSQL支持的应用配合使用,尤其适合与PostGraphile或PostgREST搭配。

核心功能和特性

  • 独立与嵌入式模式:支持通过CLI独立运行或作为库集成到Node.js代码中
  • 低延迟:使用PostgreSQL的LISTEN/NOTIFY机制,任务调度至执行延迟通常低于3ms
  • 高性能:采用SKIP LOCKED机制获取任务,提升任务获取速度
  • 默认并行执行:支持并发处理任务,可通过配置控制并发数
  • 队列机制:同名队列中的任务串行执行,不同队列任务并行执行
  • 自动重试:失败任务自动重试,采用指数退避策略
  • 可配置重试次数:默认25次重试(约3天周期)
  • 定时任务:支持类crontab语法的周期性任务调度(可选回填功能)
  • 任务去重:通过唯一job_key实现任务去重
  • 灵活的运行时控制:支持复杂的速率限制(可配合graphile-worker-rate-limiter)
  • 开发便捷:支持开发模式下的任务文件监听(实验性),无需重启工作进程即可更新任务代码

使用场景和适用范围

  • 后台任务处理:需要在后台异步执行的操作(如发送邮件、推送通知)
  • 耗时操作:计算密集型任务(数据分析、报表生成)或IO密集型任务(文件处理、API调用)
  • 定时任务:周期性执行的任务(数据备份、日志清理、统计报告)
  • 任务去重:确保相同任务不会重复执行(如重复订单处理)
  • 高可用部署:生产环境就绪,可与主应用部署在同一Node.js进程中降低运维复杂度

环境要求

  • PostgreSQL 10+
  • Node.js 10+
  • 数据库需支持pg***扩展(如未安装,会自动在public模式下安装)

安装与部署

Docker 快速启动

# 基本用法(使用环境变量指定数据库连接)
docker run -d \
  -e DATABASE_URL="postgres://user:password@postgres-host:5432/mydb?ssl=true" \
  -v ./tasks:/app/tasks \
  --name graphile-worker \
  graphile/worker:latest

# 仅初始化数据库 schema
docker run --rm \
  -e DATABASE_URL="postgres://user:password@postgres-host:5432/mydb" \
  graphile/worker:latest \
  --schema-only

# 单次运行模式(执行完所有可运行任务后退出)
docker run --rm \
  -e DATABASE_URL="postgres://user:password@postgres-host:5432/mydb" \
  -v ./tasks:/app/tasks \
  graphile/worker:latest \
  --once

Docker Compose 配置示例

version: '3.8'

services:
  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: worker_user
      POSTGRES_PASSWORD: worker_password
      POSTGRES_DB: worker_db
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U worker_user -d worker_db"]
      interval: 5s
      timeout: 5s
      retries: 5

  worker:
    image: graphile/worker:latest
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      DATABASE_URL: "postgres://worker_user:worker_password@postgres:5432/worker_db"
      # 可选环境变量
      # CONCURRENCY: 5  # 并发任务数
      # POLL_INTERVAL: 1000  # 轮询间隔(ms)
    volumes:
      - ./tasks:/app/tasks  # 挂载任务目录
    restart: always

volumes:
  postgres_data:

详细使用方法和配置说明

任务定义

任务需定义在任务目录(默认tasks/)中的JS文件,文件名即为任务标识符。

示例任务文件(tasks/hello.js):

// tasks/hello.js
module.exports = async (payload, helpers) => {
  const { name } = payload;
  helpers.logger.info(`Hello, ${name}`);
};

启动工作进程

通过CLI启动(Docker环境)

# 基本启动(使用环境变量DATABASE_URL和默认任务目录/tasks)
docker run -e DATABASE_URL="postgres:///my_db" -v ./tasks:/app/tasks graphile/worker:latest

# 指定数据库连接字符串和并发数
docker run -v ./tasks:/app/tasks graphile/worker:latest -c "postgres://user:pass@host:port/db?ssl=true" -j 5

# 定时任务模式(指定crontab文件)
docker run -v ./tasks:/app/tasks -v ./crontab:/app/crontab graphile/worker:latest --crontab /app/crontab

通过代码集成(Node.js库模式)

const { run, quickAddJob } = require("graphile-worker");

async function main() {
  // 启动工作进程
  const runner = await run({
    connectionString: "postgres:///my_db",
    concurrency: 5,  // 并发数
    noHandleSignals: false,  // 处理系统信号(SIGINT, SIGTERM等)以优雅关闭
    pollInterval: 1000,  // 轮询间隔(ms)
    taskList: {
      hello: async (payload, helpers) => {
        const { name } = payload;
        helpers.logger.info(`Hello, ${name}`);
      },
    },
  });

  // 添加任务
  await quickAddJob(
    { connectionString: "postgres:///my_db" },
    "hello",  // 任务标识符
    { name: "Bobby Tables" }  // 任务参数
  );

  // 等待工作进程完成
  await runner.promise;
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});

添加任务

通过SQL添加任务

连接PostgreSQL数据库执行以下SQL:

-- 添加任务
SELECT graphile_worker.add_job('hello', json_build_object('name', 'Bobby Tables'));

-- 添加定时任务(5分钟后执行)
SELECT graphile_worker.add_job(
  'hello', 
  json_build_object('name', 'Bobby Tables'),
  run_at => NOW() + INTERVAL '5 minutes'
);

通过代码添加任务

const { makeWorkerUtils } = require("graphile-worker");

async function addTask() {
  const workerUtils = await makeWorkerUtils({
    connectionString: "postgres:///my_db",
  });
  
  try {
    // 添加任务
    await workerUtils.addJob(
      "hello",  // 任务标识符
      { name: "Bobby Tables" },  // 任务参数
      { 
        queueName: "greetings",  // 队列名称(同名队列串行执行)
        priority: 10,  // 优先级(数值越小优先级越高)
        runAt: new Date(Date.now() + 5000),  // 5秒后执行
        maxAttempts: 5,  // 最大重试次数
        jobKey: "unique-hello-bobby"  // 任务去重键
      }
    );
  } finally {
    await workerUtils.release();
  }
}

addTask().catch(console.error);

配置参数

环境变量

环境变量描述默认值
DATABASE_URLPostgreSQL连接字符串-
GRAPHILE_LOGGER_DEBUG是否启用调试日志0

CLI选项

Options:
      --help                    显示帮助信息
      --version                 显示版本号
  -c, --connection              数据库连接字符串,默认使用DATABASE_URL环境变量
  -s, --schema                  数据库模式(graphile-worker元数据存储位置)
                                           [默认: "graphile_worker"]
      --schema-only             仅安装/更新数据库模式,然后退出
      --once                    执行完所有可运行任务后退出
  -w, --watch                   开发模式:监听任务文件变化(实验性)
      --crontab                 指定crontab文件路径
  -j, --jobs                    并发任务数 [默认: 1]
  -m, --max-pool-size           PostgreSQL连接池最大大小 [默认: 10]
      --poll-interval           轮询间隔(毫秒) [默认: 2000]
      --no-prepared-statements  禁用预编译语句(如用于pgBouncer兼容)

状态与要求

  • 生产就绪:已在生产环境中使用
  • 版本说明:0.x版本,表示仍在快速迭代,次要版本更新可能需要少量代码调整
  • 依赖要求:PostgreSQL 10+,Node.js 10+
  • 数据库扩展:自动安装pg***扩展(如需自定义扩展位置,可能需要创建公共模式别名函数)
查看更多 worker 相关镜像 →
airbyte/worker logo
airbyte/worker
by Airbyte
认证
暂无描述
210M+ pulls
上次更新:17 小时前
hkube/worker logo
hkube/worker
by Kube-HPC
暂无描述
10K+ pulls
上次更新:27 天前
kubeshark/worker logo
kubeshark/worker
by kubeshark
暂无描述
210M+ pulls
上次更新:2 天前
budibase/worker logo
budibase/worker
by budibase
Budibase后台工作器镜像,用于配合Docker Compose使用。
11M+ pulls
上次更新:2 天前
opencti/worker logo
opencti/worker
by opencti
暂无描述
85M+ pulls
上次更新:15 小时前

常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像免费版与专业版有分别支持哪些镜像?

免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

轩辕镜像下载加速使用手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

🔐

登录方式进行 Docker 镜像下载加速教程

通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤

🐧

Linux Docker 镜像下载加速教程

在 Linux 系统上配置轩辕镜像源,支持主流发行版

🖥️

Windows/Mac Docker 镜像下载加速教程

在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统

📦

Docker Compose 镜像下载加速教程

在 Docker Compose 中使用轩辕镜像加速,支持容器编排

📋

K8s containerd 镜像下载加速教程

在 k8s 中配置 containerd 使用轩辕镜像加速

🔧

宝塔面板 Docker 镜像下载加速教程

在宝塔面板中配置轩辕镜像加速,提升服务器管理效率

💾

群晖 NAS Docker 镜像下载加速教程

在 Synology 群晖NAS系统中配置轩辕镜像加速

🐂

飞牛fnOS Docker 镜像下载加速教程

在飞牛fnOS系统中配置轩辕镜像加速

📱

极空间 NAS Docker 镜像下载加速教程

在极空间NAS中配置轩辕镜像加速

⚡

爱快路由 ikuai Docker 镜像下载加速教程

在爱快ikuai系统中配置轩辕镜像加速

🔗

绿联 NAS Docker 镜像下载加速教程

在绿联NAS系统中配置轩辕镜像加速

🌐

威联通 NAS Docker 镜像下载加速教程

在威联通NAS系统中配置轩辕镜像加速

📦

Podman Docker 镜像下载加速教程

在 Podman 中配置轩辕镜像加速,支持多系统

📚

ghcr、Quay、nvcr、k8s、gcr 等仓库下载镜像加速教程

配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤

🚀

专属域名方式进行 Docker 镜像下载加速教程

无需登录即可使用轩辕镜像加速服务,更加便捷高效

需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429

商务:17300950906
|©2024-2025 源码跳动
商务合作电话:17300950906|Copyright © 2024-2025 杭州源码跳动科技有限公司. All rights reserved.