面向 Python 的分布式任务队列,用于在多个工作进程和消息代理之间执行后台任务与定时任务。
hibiken/asynq
基于 Redis 的 Go 分布式任务队列库,支持定时任务、失败重试和优先级队列。
- Star
- 13,784
- Fork
- 991
- 未关闭 Issue
- 293
- 最近提交
- 3天前
这是什么?
Asynq 是一个 Go 语言库,用于将任务放入队列,并由 worker 协程异步处理。客户端把任务写入 Redis,一个或多个 worker 服务器从队列中取出任务并发执行,可以把工作负载分布到多台机器上。
它覆盖了后台任务的常见需求:定时任务与周期任务、失败任务重试、worker 崩溃后的任务恢复、加权和严格优先级队列、通过 unique 选项去重、单任务超时与截止时间,以及把多个任务聚合成批次处理。Handler 既可以是普通函数,也可以是实现接口的类型,并支持中间件。
运维方面,它提供 Prometheus 指标集成和 Redis Sentinel 高可用支持,并配有独立的 Asynqmon 网页界面和名为 asynq 的命令行工具,用于查看和管理队列与任务。需要 Redis 4.0 或更高版本,部分 Lua 脚本可能不兼容 Redis Cluster。
核心功能
- 01支持定时、周期和延迟执行任务
- 02失败任务自动重试,worker 崩溃后可恢复任务
- 03支持加权和严格两种优先级队列
- 04支持任务去重、超时与截止时间设置
- 05支持将多个任务聚合成批次处理
- 06提供 Prometheus 指标、Redis Sentinel 支持、网页界面和命令行工具
适用场景
- 在后台发送邮件或通知,避免阻塞 HTTP 请求
- 在独立的 worker 机器上处理图片缩放或上传文件
- 在 Go 服务中运行清理、生成报表等周期性任务
- 以 Redis 作为消息中间件,把繁重任务分散到多台服务器
快速上手
- 1
安装 Go,并确保 Redis 服务器(4.0 或更高版本)正在运行
- 2
在你的 Go 模块中安装 Asynq 库
go get -u github.com/hibiken/asynq - 3
编写任务包,用 Client 入队任务,并用 Server 处理任务
使用前须知
- 需要 Redis 服务器(4.0 或更高版本)来存储和传递任务。
- 当前为 v0.x 版本,在 v1.0.0 发布前公共 API 可能在没有主版本号升级的情况下变化。
- 部分 Lua 脚本可能与 Redis Cluster 不兼容。
标签
常见问题
- asynq 是什么?
- 基于 Redis 的 Go 分布式任务队列库,支持定时任务、失败重试和优先级队列。 Asynq 是一个 Go 语言库,用于将任务放入队列,并由 worker 协程异步处理。客户端把任务写入 Redis,一个或多个 worker 服务器从队列中取出任务并发执行,可以把工作负载分布到多台机器上。
- asynq 可以免费使用吗?用的什么许可证?
- asynq 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- asynq 还在维护吗?
- 活跃维护中。asynq 最近一次提交是在 2026年10月19日。
- asynq 适合用来做什么?
- 在后台发送邮件或通知,避免阻塞 HTTP 请求 在独立的 worker 机器上处理图片缩放或上传文件 在 Go 服务中运行清理、生成报表等周期性任务 以 Redis 作为消息中间件,把繁重任务分散到多台服务器
- asynq 怎么安装和运行?
- 安装 Go,并确保 Redis 服务器(4.0 或更高版本)正在运行 在你的 Go 模块中安装 Asynq 库: go get -u github.com/hibiken/asynq 编写任务包,用 Client 入队任务,并用 Server 处理任务
- 在哪里获取 asynq?
- 源代码和安装说明在 GitHub 上:https://github.com/hibiken/asynq
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向后台任务、AI 智能体和持久化工作流的编排引擎,支持 Python、TypeScript、Go 和 Ruby。
可在 Serverless、服务器或边缘环境运行的持久化工作流引擎,支持带步骤的函数与 AI 工作流。
Temporal 是一个持久化执行平台,服务端可可靠地运行工作流并自动重试失败的操作。
驱动 Stoat 聊天平台的 Rust 后端服务与库,包含 REST API、WebSocket 事件服务和文件服务。
开源通用后端,开箱提供实时通知、数据存储与高级搜索及用户管理等基础能力。