百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
S

sucker_punch

> 编程语言
开源

Sucker Punch 是一个使用 concurrent-ruby 的 Ruby 异步处理库,深受 Sidekiq 和 girl_friday 的影响。

2.6K stars0 点赞3 次浏览
访问官网GitHub

工具介绍

Sucker Punch 是一个使用 concurrent-ruby 的 Ruby 异步处理库,深受 Sidekiq 和 girl_friday 的影响。

Sucker Punch

Sucker Punch 是一个单进程 Ruby 异步处理库。 这降低了在 Heroku 等服务上的托管成本,同时也减少了在专用服务器上维护额外任务所需的内存占用。 所有队列都可以在单个应用程序(例如 Rails、Sinatra 等)进程内运行。

Sucker Punch 非常适合处理异步任务,如发送邮件、数据处理或社交平台操作。当您可以在 Web 应用程序的同一进程内后台完成这些操作时,就没有理由让用户等待。

Sucker Punch 是基于 concurrent-ruby 构建的。每个任务被设置为一个池,这相当于它自己的队列,由各个工作进程处理这些任务。与大多数其他后台处理库不同,Sucker Punch 的任务存储在内存中。这样做的好处是无需额外的基础设施要求(例如数据库、Redis 等)。然而,如果 Web 进程在队列中仍有任务时被重启,这些任务将会丢失。因此,Sucker Punch 通常推荐用于快速且非关键任务(例如日志、邮件等)。

安装

将以下行添加到你的应用程序的 Gemfile 中:

gem 'sucker_punch', '~> 3.0'

然后执行:

$ bundle

你也可以运行(等同于上面两步):

bundle add sucker_punch

或者自行安装:

$ gem install sucker_punch

向后兼容性

3.x 版本未引入任何破坏性更改。

在 ~> 2.0.0 版本中,用于入队异步后台任务的语法已从:

ruby
LogJob.new.async.perform(...)

更改为:

ruby
LogJob.perform_async(...)

如果你从 2.0.0 之前的版本升级,并希望保留旧语法 LogJob.new.async.perform(...),可以在你的应用中包含 sucker_punch/async_syntax。

对于 Rails,你可以添加一个初始化器:

ruby
# config/initializers/sucker_punch.rb

require 'sucker_punch/async_syntax'

用法

每个任务都充当自己的队列,并且应该是一个独立的 Ruby 类,该类:

  • 包含 SuckerPunch::Job
  • 定义 perform 实例方法

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Ruby

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言