Sidekiq基础的基础

来源:互联网 发布:校园网络借贷主题班会 编辑:程序博客网 时间:2024/05/08 20:21

基础知识
sidekiq是一种后台作业处理的框架,它可以在后台执行工作,以扩展你的应用程序,这需要三个部分:

1.Client

Sidekiq client在你的web应用程序中运行,允许你把作业放在后台进行处理。在应用的代码中,有三种方式可以创建一个Job:

MyWorker.perform_async(1, 2, 3)SomeClass.delay.some_class_method(1, 2, 3)                      # See Delayed Extensions wiki pageSidekiq::Client.push('class' => MyWorker, 'args' => [1, 2, 3])  # Lower-level generic APISidekiq::Client.push('class' => 'MyWorker', 'args' => [1, 2, 3])  # Can also pass class as a string.

这三种方式都是创建一个Hash用于表示某个人物,然后将Hash转换成JSON字符串,并将这个字符串添加到Rails的一个队列中。这以为这worker的参数必须是简单的JSON数据类型(numbers, strings, boolean, array, hash)。复杂的Ruby对象(比如日期,事件,ActiveRecord实例)不会被正确的转换。

2.Redis

Redis为sidekiq提供数据存储,It holds all the job data along with runtime and historical data to power Sidekiq’s Web UI.

3.Server

每个sidekiq服务进程从Redis的队列中获取并处理任务。就像你的web进程一样,sidekiq引导Rails,所以你的任务和workers可以使用所有的Rails API,包括ActiveRecord。Server将会实例化你的worker,并且传递参数给worker。Everything else is up to your code.

0 0