Ruby on rails Sidekiq工作人员未被触发

Ruby on rails Sidekiq工作人员未被触发,ruby-on-rails,ruby,nginx,passenger,sidekiq,Ruby On Rails,Ruby,Nginx,Passenger,Sidekiq,我使用的是我的背景工作: 我有一个工人应用程序/workers/data\u import\u worker.rb class DataImportWorker include Sidekiq::Worker sidekiq_options retry: false def perform(job_id,file_name) begin #Some logic in it ..... end end def parse_raw_data #job

我使用的是我的背景工作:

我有一个工人应用程序/workers/data\u import\u worker.rb

class DataImportWorker
 include Sidekiq::Worker
 sidekiq_options retry: false

  def perform(job_id,file_name)
    begin
    #Some logic in it .....
  end
 end
  def parse_raw_data
      #job_id and #filename are defined bfr
      DataImportWorker.perform_async(job_id,filename)   
  end
从lib/parse_excel.rb文件调用

class DataImportWorker
 include Sidekiq::Worker
 sidekiq_options retry: false

  def perform(job_id,file_name)
    begin
    #Some logic in it .....
  end
 end
  def parse_raw_data
      #job_id and #filename are defined bfr
      DataImportWorker.perform_async(job_id,filename)   
  end
一旦我从我的行动中触发它,工人就不会被叫到。。Redis正在
localhost:6379上运行


你知道为什么会这样吗。环境是Linux。

我遇到了同样的问题,结果是我在函数perform\u async中传递的参数不合适,似乎不应该在perform\u async中传递任何查询结果,您必须执行函数perform中的所有查询。

您需要指定worker用于的队列的名称

例如: sidekiq\u选项重试:false,:queue=>数据导入\u worker

数据\u导入\u工作者可以是您想要为其命名的任何名称


然后,当您转到web界面:yoursite.com/sidekiq时,您将能够看到队列“data\u import\u worker”的当前工作人员我在sidekiq运行时遇到了类似的问题,但当我调用
perform\u async
时,它除了返回
true
之外,什么都没有做


问题是,rspec sidekiq被添加到我的“:开发,:测试”组。通过将rspec sidekiq移动到“:test”组,我修复了该问题。

我的问题只是工作文件路径错误

需要位于“project\u root/app/worker/worker.rb”中,而不是“project\u root/worker/worker.rb”


检查文件路径

从Rails应用程序的根目录启动sidekiq。比如说,

bundle exec sidekiq-e staging-C config/sidekiq.yml


它真的可以在独立的sidekiq上运行多个Worker吗? 例如,我有两名员工: 加工工人 回叫员

当我跑步时,sidekiq: bundle exec sidekiq-r./workers/process_worker.rb-C./config/sidekiq.yml


同一时间只有一名工作人员。

对于我来说,在以后执行执行时,它会排队,但不会从队列中删除。我需要将队列名称添加到sidekiq.yml文件中

---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - default
  - my_queue

我在生产控制台中调用了
perform\u async(23)
,但是我的sidekiq是在暂存模式下启动的


在我以生产模式启动Sidekiq后,一切都开始运转良好。

在这方面损失了整整15分钟。要检查Sidekiq是否正确加载了配置文件(带有队列名称),请转到“忙”选项卡中的web界面,您将找到您的进程ID,并在其下方找到您的队列


在我们的例子中,我们拼错了
mailer
(mailer的正确ActiveJob队列是
Mailers
,复数形式)

sidekiq在运行吗?日志上写了什么?您是否检查了redis,作业是否添加到队列:默认值?@Roman:谢谢回复!是的,sidekiq和redis都在运行。。作业也未添加到默认队列。。。但当我从控制台触发作业时,它会工作,也许在开发和生产中运行时,您有不同的数据库或名称空间。或者设置了一个不同的队列。@Roman:我不明白你的意思。。你能详细说明一下吗?我指的是:在我的案例中,这是类似的问题,我也有同样的问题。我还必须重新构建我的捆绑包:
bundle安装--未经测试
我在上添加了一个指向此答案的链接,以供将来参考谢谢您提供答案,我正要将我的机器扔出窗口。另请参阅此潜在问题的呼叫