`
rain010101
  • 浏览: 10526 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sidekiq强大的异步任务处理

    博客分类:
  • ruby
阅读更多
本篇介绍sidekiq基于redis队列的后端的异步任务处理,当然还有定时任务,延时处理等功能。

sidekiq的宣传语:

What if 1 Sidekiq process could do the work of 20 Resque or DelayedJob processes?

1.定义异步处理worker类
 
app/worker/hard_work.rb

class HardWorker
      include Sidekiq::Worker
      sidekiq_options :queue => 'phoenix_job' , :timeout => 60, :retry => true, :backtrace => true

      def perform(options,count=5)
          puts 'do'
      end
end
 

2.加载workers目录
 
application.rb

config.autoload_paths += %W(#{Rails.root}/app/workers)
 

3.加入异步任务处理队列
 
app/controllers/**_controller.rb

HardWorker.perform_async(params)
 

4.sidekiq.yml配置文件
 
config/sidekiq.yml


:verbose: false
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - [phoenix_job,7]
  - [default, 2]

staging:
  :concurrency: 5
development:
  :concurrency: 5
production:
  :concurrency: 50
 

5.配置sidekiq链接redis

config/initialiizers/sidekiq.rb
 
      ENV["REDISTOGO_URL"] = "redis://username:.password@host:port}"
 

6.unicorn运行after_fork配置
unicorn.rb

after_fork do |server, worker|

ENV["REDISTOGO_URL"] = "redis://username:.password@host:port}"
 

end


7.运行,停止命令
 
stop.sh

bundle exec sidekiqctl quiet tmp/pids/sidekiq.pid
bundle exec sidekiqctl stop tmp/pids/sidekiq.pid
 

start.sh

bundle exec sidekiq  -C config/sidekiq.yml -d -e production
 
感觉比resque好用多了,在断网自动重连,日志文件,pid文件,部署,性能等方面都要好。
0
1
分享到:
评论

相关推荐

    Rails3消息队列系统 Sidekiq.7z

    总的来说,Rails3消息队列系统Sidekiq是一个强大的工具,它能够帮助开发者构建高可用、高性能的Rails应用,有效地处理异步任务,提升系统的整体效率。通过学习和掌握Sidekiq的使用,开发者可以更好地应对复杂的Web...

    开源项目-albrow-jobs.zip

    在编程领域,尤其是在服务器端应用开发中,处理异步任务和后台作业是常见的需求。这些任务可能包括定时任务、批量处理、邮件发送等,不适宜阻塞主线程,以免影响系统的响应速度。在这种背景下,各种后台作业库...

    exq:Elixir的作业处理库-与Resque Sidekiq兼容

    Exq是Elixir生态系统中的一个作业处理库,它旨在提供类似Resque和Sidekiq的功能,这二者都是在Ruby世界中广泛使用的后台任务处理框架。Exq的优势在于它能够无缝地与Redis集成,利用Redis的高效性能来存储和管理作业...

    Ruby-Mailman一个Ruby邮件接收处理微框架

    Mailman 可以与 Ruby 社区中的其他库进行集成,例如,你可以使用 `mail` gem 来增强邮件处理能力,或者使用 `sidekiq` 或 `resque` 进行异步任务处理。此外,还可以结合 Rails 应用,将 Mailman 作为后台任务处理...

    sidekiq-master.zip_Java编程_Java_

    Sidekiq是一款强大的后台任务处理库,主要用于Ruby on Rails应用,但在这里我们关注的是它与Java编程的关联。虽然Sidekiq是用Ruby编写的,但它的概念和工作原理可以启发我们在Java环境中构建类似的任务队列系统。让...

    gitLab 使用教程.pdf

    - Sidekiq:后台任务队列执行器,支持异步任务。 - Unicorn:HTTP服务器,承载GitLab Rails应用。 GitLab的工作流程涉及GitLab Shell和GitLab Workhorse: - GitLab Shell主要处理通过SSH发起的Git操作,包括权限...

    rails指南 中文版

    9. **ActiveJob**:Rails的后台任务处理框架,可以配合各种队列服务(如Resque、Sidekiq等)处理异步任务。 10. **Rails Console**:提供了一个交互式的命令行工具,用于检查和调试应用,执行Ruby代码,以及与...

    ruby-aws-cookbooks:AWS OpsWorks 上的 Ruby on Rails + Sidekiq + Elasticsearch + Capistrano 说明书

    Sidekiq是一个高效的背景任务处理系统,它使用多线程工作进程来处理Rails应用中的异步任务,如发送电子邮件或执行耗时的操作。集成Sidekiq可以显著提高应用性能,因为它避免了阻塞主线程并减少了HTTP请求的响应时间...

    verk:一个工作过程系统,它只是在发出声音! :vampire:‍

    总的来说,Verk 是 Elixir 开发者处理后台任务的优秀工具,它结合了 Elixir 的强大功能和 Redis 的高效存储,提供了一个健壮的异步处理解决方案。通过使用 Verk,你可以提升应用程序的响应速度,避免阻塞主线程,...

    购买新南威尔士州共享图书馆

    在图书馆系统中,可以利用Gems如Devise进行用户认证,Pundit或CanCanCan处理权限控制,Resque或Sidekiq实现异步任务处理,如邮件通知和资源同步。 6. **JSON和XML数据交换**:在共享系统中,不同图书馆间的数据交换...

    false-alarm:提示静音或后台任务

    如线程(threads)、进程(processes)、Green Threads(如GVL解除的JRuby支持)、并发库如Celluloid或者Concurrent Ruby,甚至可以结合如Sidekiq、Resque等队列系统处理复杂的后台任务。线程是轻量级的,可以在同一...

    awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版.zip

    10. **Sidekiq** 和 **Resque**:后台任务队列处理,用于异步处理耗时的任务,提升用户体验。 11. **DelayedJob** 和 **ActiveJob**:与Sidekiq和Resque类似,用于处理后台任务,但它们是基于ActiveRecord的。 12....

    redis-server下载

    这些队列库将待执行的任务作为JSON对象存储在Redis的列表中,后台工作进程定期检查并处理队列中的任务,从而实现异步处理,避免阻塞主线程,提高系统的并发能力。 关于`redis-server`的下载与配置,首先,你需要从...

    Ruby+Rails+社交+进阶教程5

    同时,通过使用缓存(如Redis或Memcached)、数据库索引和优化查询,以及Rails的后台任务(如Sidekiq或Resque)来处理异步任务,提升应用性能。 通过本教程的学习,你将不仅掌握Ruby on Rails的基本用法,还能了解...

    使用 Ruby 进行 Web 应用程序的开发和部署.zip

    - **后台任务**:使用 Sidekiq 或 Resque 处理异步任务。 9. **版本控制**: - **Git**:使用 Git 进行版本控制,协同开发。 通过以上知识点的学习,开发者可以掌握如何使用 Ruby 进行 Web 应用的开发,并具备将...

    无线点餐系统的服务端,使用ruby on rails框架

    6. 异步处理:考虑到点餐高峰期可能会有大量并发请求,使用如Sidekiq或Resque等后台任务队列可以提高系统的响应速度和可靠性。 7. 错误处理和日志记录:通过使用如Rails的Action Controller的异常处理机制,确保系统...

    Ruby-流利说面试题使用任意ruby框架实现一个p2p交易系统

    - 使用如Sidekiq或Resque这样的后台任务队列处理异步通知。 7. **安全性**: - 使用HTTPS确保通信安全。 - 对敏感信息进行加密存储,例如用户的密码和个人信息。 - 防止SQL注入和跨站脚本攻击。 8. **测试**:...

    Gitlab的安装及使用.docx

    * Sidekiq:用于在后台执行队列任务(异步执行) * Unicorn:An HTTP server for Rack applications,GitLab Rails 应用是托管在这个服务器上面的。 Gitlab 的工作流程包括: * Gitlab Shell 的两个作用:为 ...

    库鲁后端

    为了处理如发送邮件通知、处理支付等耗时操作,库鲁后端可能会采用异步任务处理。Action Cable(Rails的一部分)可以实现WebSockets,提供实时通信。另外,如Sidekiq或Resque这样的后台队列服务可以用来处理这些非...

Global site tag (gtag.js) - Google Analytics