标签: sidekiq

在Ubuntu上运行Sidekiq作为守护进程

如何在Ubuntu上运行sidekiq作为守护进程?

如果我跑,bundle exec sidekiq -D我得到invalid option: -D,有没有办法运行它没有其他控制器,如上帝,新贵...?

ruby daemon ruby-on-rails sidekiq

19
推荐指数
3
解决办法
1万
查看次数

使用与Sidekiq一起使用的ActiveJob禁用自动重试

有没有办法禁用ActiveJob和Sidekiq的自动重试?

我知道只有Sidekiq,我们只需要放

sidekiq_options :retry => false
Run Code Online (Sandbox Code Playgroud)

如上所述:https://github.com/mperham/sidekiq/wiki/Error-Handling#configuration

但它似乎不适用于ActiveJob和Sidekiq.

我也知道这里提出的重新启用重试的解决方案:https://stackoverflow.com/a/28216822/2431728

但这不是我需要的行为.

ruby-on-rails sidekiq rails-activejob

19
推荐指数
4
解决办法
1万
查看次数

如何使用ActiveJob设置Sidekiq的重试次数?

从Rails API,我发现ActiveJob可以retry_job间隔:

my_job_instance.enqueue
my_job_instance.enqueue wait: 5.minutes
my_job_instance.enqueue queue: :important
my_job_instance.enqueue wait_until: Date.tomorrow.midnight
Run Code Online (Sandbox Code Playgroud)

http://api.rubyonrails.org/classes/ActiveJob/Enqueuing.html

但是如果我想设置重试计数,比如Sidekiq:

include Sidekiq::Worker
sidekiq_options :retry => 5
Run Code Online (Sandbox Code Playgroud)

https://github.com/mperham/sidekiq/wiki/Error-Handling

该示例代码怎么办?

class SiteScrapperJob < ActiveJob::Base
  rescue_from(ErrorLoadingSite) do
    retry_job queue: :low_priority
  end

  def perform(*args)
    # raise ErrorLoadingSite if cannot scrape
  end
end
Run Code Online (Sandbox Code Playgroud)

现在我把它添加到我的工作班:

Sidekiq.default_worker_options = { retry: 5 }
Run Code Online (Sandbox Code Playgroud)

但似乎不是很好.

sidekiq rails-activejob

19
推荐指数
4
解决办法
9852
查看次数

监控完成Sidekiq工作的最佳方法是什么?

在用户首次登录后,我正在使用Sidekiq工作人员完成对Facebook的一些请求.通常,任务大约需要20秒左右.

我想在同步完成后立即使用ajax请求将一些信息加载到页面上,但我不确定使用Javascript检查作业完成的最佳方法.

一种可能性是配置Sidekiq工作程序在其余作业完成后设置cookie.然后我可以使用setTimeout函数在调用load函数之前继续检查cookie.但我不确定这是否是最佳方式.我可以使用Redis吗?

ruby ruby-on-rails sidekiq

18
推荐指数
1
解决办法
1万
查看次数

为什么Sidekiq没有关闭旧连接?

我的Rails 4.1应用程序使用Sidekiq在Celluloid actor中运行测量.它不断耗尽数据库连接.似乎Sidekiq每个作业打开2个连接,旧连接永远不会正常关闭.

系统的功能

  • 每15分钟,我就开始了MeasurementWorker.通过电话MeasurementWorker.perform_async(measurement.id).它这样做:
    class MeasurementWorker
      include Sidekiq::Worker
      sidekiq_options retry: false, backtrace: true

      def perform(measurement_id, force = false)
        ActiveRecord::Base.connection_pool.with_connection do
            Measurement.find(measurement_id).run
        end
      end
    end
Run Code Online (Sandbox Code Playgroud)
  • 在这个测量中,当我打电话时.run,它会这样做:
    # various checks if measurement can be run at all, using AR
    # ...
    begin
      ActiveRecord::Base.connection_pool.with_connection do
      # (I used to have a Timeout.timeout here, but removed it for the
      # sake of simplification)
        @connection = MeasurementConnection.new do |event_info|
          event = Event.new
          event.assign_attributes(event_info)
          event.save
        end
        while @connection.measuring?; end …
Run Code Online (Sandbox Code Playgroud)

postgresql activerecord ruby-on-rails sidekiq celluloid

18
推荐指数
3
解决办法
3339
查看次数

重启Sidekiq

重启sidekiq的正确方法是什么?它似乎在我启动它时缓存我的工作人员代码,因此每次我对我的工作人员进行更改时我都需要重新启动它.我正在使用Ctrl/C执行此操作,但此过程需要很长时间才能结束并将我返回到提示符.

有没有办法迫使重启立即生效?

我正在使用最新版本的Sinatra通过POW运行.

ruby restart sinatra sidekiq

17
推荐指数
1
解决办法
1万
查看次数

Sidekiq工人没有被触发

我使用Sidekiq作为我的后台工作:

我有一个工人app/workers/data_import_worker.rb

class DataImportWorker
 include Sidekiq::Worker
 sidekiq_options retry: false

  def perform(job_id,file_name)
    begin
    #Some logic in it .....
  end
 end
Run Code Online (Sandbox Code Playgroud)

从文件lib/parse_excel.rb调用

  def parse_raw_data
      #job_id and #filename are defined bfr
      DataImportWorker.perform_async(job_id,filename)   
  end
Run Code Online (Sandbox Code Playgroud)

一旦我从我的行动中触发它,工作人员就不会被调用.Redis正在运行 localhost:6379

知道为什么这一定必须发生.环境是Linux.

ruby ruby-on-rails passenger nginx sidekiq

16
推荐指数
2
解决办法
2万
查看次数

适用于多种环境的Sidekiq配置

我已经查看了多个来源并尝试了各种方案,但无法解决这个问题.请指出我正确的方向.

像每个人一样,我有3个环境(开发,分期和生产).

我在sidekiq.yml文件中有以下内容

# Options here can still be overridden by cmd line args.
#   sidekiq -C config.yml  
---
:verbose: false
:namespace: xyz
:logfile: log/sidekiq.log
:concurrency:  25
:strict: false
:pidfile: tmp/pids/sidekiq.pid
:queues:
  - [stg_xyz_tests_queue, 10]
  - [stg_default_xyz_queue, 2]
  - [stg_xyz_default_queue, 3]
development:
  :verbose: true
  :concurrency:  15
  :queues:
    - [dev_xyz_queue, 10]
    - [dev_default_xyz_queue, 2]
    - [dev_xyz_default_queue, 3]
staging:
  :queues:
    - [stg_xyz_queue, 10]
    - [stg_default_xyz_queue, 2]
    - [stg_xyz_default_queue, 3]
production:
  :queues:
    - [prod_xyz_queue, 10]
    - [prod_default_xyz_queue, 2]
    - [prod_xyz_default_queue, 3]
Run Code Online (Sandbox Code Playgroud)

有了这个,我希望当我用命令启动sidekiq时

RAILS_ENV=#{rails_env} …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails sidekiq

16
推荐指数
2
解决办法
2万
查看次数

我对Unicorn,Sidekiq和DB Pool大小的理解是否正确?

我有Unicorn,Sidekiq和Postgres设置.

我试图了解正确的配置设置,以便我没有达到最大数据库连接限制.在Opsworks中,m1.small Postgres RDS实例最多可以有121个连接.

我的db池大小为5.

考虑一下.Sidekiq和Unicorn是它自己的过程.因此,每个进程的数据库池大小为5.如果我的理解错误,请纠正我.

如果我有5个独角兽进程',那意味着5*5 = 25个数据库连接

现在这是我有点困惑的部分,因为Sidekiq是多线程的.如果Sidekiq的并发度为5.并且db池大小也设置为5.这是否意味着在给定时间内有25个潜在的数据库连接?

这意味着,对于一个实例,我可以有50个db连接?

postgresql ruby-on-rails unicorn sidekiq ruby-on-rails-4

16
推荐指数
1
解决办法
3765
查看次数

登录Sidekiq工作人员

我正在尝试记录我的sideqik工作者tail -f log/development.log在开发和heroku logs生产中使用的进度.

但是,工作人员内部的所有内容以及工作人员调用的所有内容都不会被记录.在下面的代码中,只记录了TEST 1.

如何记录worker中的所有内容以及worker调用的类?

# app/controllers/TasksController.rb
def import_data
  Rails.logger.info "TEST 1" # shows up in development.log
  DataImportWorker.perform_async
  render "done"           
end

# app/workers/DataImportWorker.rb
class DataImportWorker
  include Sidekiq::Worker

  def perform    
    Rails.logger.info "TEST 2" # does not show up in development.log

    importer = Importer.new
    importer.import_data
  end
end


# app/controllers/services/Importer.rb    
class Importer  
  def import_data
    Rails.logger.info "TEST 3" # does not show up in development.log
  end
end
Run Code Online (Sandbox Code Playgroud)

更新

我仍然不明白为什么Rails.logger.infoSidekiq.logger.info不登录日志流.通过替换来实现Rails.logger.infoputs.

ruby ruby-on-rails sidekiq

15
推荐指数
1
解决办法
2万
查看次数