在Mac和Ubuntu上引入非同步執行的Sidekiq
首先
我们终于决定在我们公司引入Sidekiq了(厉害啊)。
引入的原因大概是这样的。
-
- rundeckでバッチを定期的に起動している
-
- バッチが増え的たら重くて動かなくなった(一応動くけど)
-
- rundeckがおもい原因は重大なメモリ不足
-
- メモリ不足の原因は数時間かかるバッチのレスポンスをひたすら待っているから
- sidekiqに蹴り飛ばすしかねえ
尽管有这种感觉,但由于对于未来的异步执行处理非常有用,我们希望积极地采用它。
※并非所有处理都适合需要响应的情况,不能应用到所有场景。
(请注意)我正在相当踌躇地摸索着、忽隐忽现。
(请注意)这是一个工作记录,所以有点草草地写下来的感觉。
本地环境配置和实施
要使用Sidekiq,需要Redis。
Redis是一个NoSQL数据库,用于管理Sidekiq的任务等。
由于只进行了最基本的设置,请自行查找并修改不便之处。
在Mac上安装Redis。
使用Homebrew安装Redis
添加宝石
Sinatra是必需的,以查看仪表板。
# sidekiq
gem 'sidekiq'
gem 'sinatra', require: false
gem 'redis-namespace'
请执行bundle install。
准备设置文件
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://127.0.0.1:6379', namespace: 'sidekiq' }
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://127.0.0.1:6379', namespace: 'sidekiq' }
end
工人的创建
无论是使用generate生成还是普通地创建文件,都可以。
我们将把任务交给这个工具。
使用Rails g sidekiq:worker Update。
class UpdateWorker
include Sidekiq::Worker
def perform
update_service = Products::UpdateService.new
update_service.execute
end
end
控制器的修复 de
我会把它分配给刚创建的工人。
def product_update
UpdateWorker.perform_async
render json: { result: sidekiq_web_url }.to_json
rescue StandardError => e
raise e
end
修改routes
为了查看仪表板,进行设置。
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
启动 Redis

启动 sidekiq

搞糟了!

生产环境配置
这次的目标是Ubuntu 16.04.5 LTS。
Redis的配置
首先进行安装。
$ sudo apt安装redis-server
一旦完成,
sudo service redis启动
如果没有错误地执行,则OK。
Sidekiq的配置
使用bundle install指令。
搞定了,太好了。太棒了。
用守护进程模式启动 Sidekiq:
“`
$ bundle exec sidekiq –daemon –environment=production –logfile /project/[rails_project]/log/sidekiq.log
“`
总结
太难了…
希望以后能够熟练运用它呢!!!
如果想在博客中查看,请点击这里。
异步执行的引入 Sidekiq 在 Mac Ubuntu 上的使用