浩文 联系 关于本站 登录 注册
  • 关注新浪微博:
  • 关注微信公众号:

Sidekiq Github wiki 中文文档

基础

commit信息:Updated The Basics (markdown) | 提交者:mperham | 提交时间:2016-09-22 | 版本:3de4b2e

Sidekiq是一个后台作业程序框架。它让你使用后台负载作业来扩展应用。这需要三部分:

客户端

Sidekiq客户端可以运行在任何ruby进程中(像puma或者passenger进程)并且允许创建稍后处理的作业。在应用代码里有两种创建作业的方式:

MyWorker.perform_async(1, 2, 3)
Sidekiq::Client.push('class' => MyWorker, 'args' => [1, 2, 3]) # 低水平普通API

这两个方法是等效的,创建一个Hash来代表这个作业,序列化Hash为JSON字符串然后把字符串推送到Redis队列。这也意味着worker中的参数必须是普通的JSON 数据类型(numbers, strings, boolean, array, hash)。复杂的Ruby对象(例如,Date, Time, ActiveRecord models)将不能正确序列化。

Redis

Sidekiq使用Redis储存数据。它保存所有作业数据、运行时数据和历史数据用以支持Sidekiq Web UI的功能。

关于连接Redis的信息可以查看使用Redis这节

服务

每个Sidekiq服务进程从Redis队列获取这些作业然后执行它们。像web进程一样,Sidekiq引导Rails,因此,作业和workers可以使用完整的Rails API(包括Active Record)。服务将实例化worker然后搭配给予的参数来调用perform方法。其它的一切取决于你的代码。

上一篇: 起步
下一篇: 最佳实践