#ruby #worker #sidekiq #resque

sidekiq-rs

Rust中的Sidekiq兼容服务器

24个版本 (6个重大更新)

使用旧的Rust 2015

0.7.0 2017年3月8日
0.6.2 2016年10月13日
0.5.2 2016年9月1日
0.4.3 2016年8月31日
0.1.2 2016年8月27日

#1025 in 异步

Download history 26/week @ 2024-03-30

66 每月下载量

MIT 协议

1MB
913 代码行

Sidekiq-rs 构建状态 Crates.io Crates.io Crates.io

Rust中的Sidekiq兼容服务器,当查看Sidekiq仪表板时,其行为与纯Sidekiq完全相同。

基本思路是,由于Ruby速度慢,我们使用原生代码编写工作处理器。因此,我们使用Ruby编写工作定义,使用Rust编写实现,并在Ruby中入队工作,在Rust中完成工作。

快照

dashboard

tui

用法

  1. 实现自己的 JobHandler
  2. 实例化sidekiq-rs服务器并插入您自己的工作处理器
  3. 在Ruby中设置与您的处理器同名的虚拟工作
  4. 运行sidekiq-rs服务器并从Ruby提交工作

您可以从 examples/main.rs 中了解如何构建sidekiq-rs服务器,并参考 ruby 中的代码来了解在Ruby中编写虚拟任务。

高级用法

您绝对可以在工作处理器中嵌入Ruby VM,当工作不是原生工作时代码时,运行Ruby代码,因此它很快就会成为一个带有原生代码支持的完整Sidekiq服务器。

终止sidekiq-rs

sidekiq-rs包含信号处理实现,目前它识别两种类型的信号

  • SIGINT,用于强制退出服务器。服务器将终止所有工作者并按特定时间退出。默认时间为10秒。
  • SIGUSR1,用于优雅地退出服务器。服务器将通知并等待工作者退出。

如果接收到任何信号,服务器将不再接受任何工作。

待办事项

  • Sidekiq仪表板功能。
  • 退出信号处理。
  • 支持工作对象中的任意字段。
  • 中间件支持。
  • 通过中间件支持工作重试。
  • 文档。
  • 通过中间件提供独特的职位支持。
  • Ruby代码处理器
  • 正则表达式处理器匹配。

依赖关系

~13MB
~284K SLoC