我在Mac OS X上使用Rails 5.0.1。我刚通过自制软件安装了redis,并在我的Gemfile中使用了这个
gem 'sidekiq'
我有这个文件app / workers / run_crawlers_worker.rb,...
class MyWorker
include Sidekiq::Worker
def perform()
puts "about to fire up service ..."
svc = MyService.new
svc.do_tasks
puts "done invoking call"
end
end
在我的网络应用程序的某个地方,我有
MyWorker.perform_async()
虽然我有信心上面的内容被调用,但我没有看到我的工作中的任何“执行”方法被调用(我没有看到任何hte输出输出而且我看不到结果在我的数据库中执行的“do_tasks”方法)。我需要配置一些additioanl来调用我的方法吗?
答案 0 :(得分:1)
您可能没有运行sidekiq,我建议您查看Foreman,它可以配置为一次运行所有预期的进程(Rails服务器,工作人员,Redis等)。< / p>
答案 1 :(得分:0)
我是否需要配置additioanl以调用我的方法?
你需要在后台运行sidekiq进程,它将负责运行你入队的作业。
有没有办法获得&#34;捆绑exec sidekiq&#34;在我启动Rails服务器时自动运行?
投入工头。这很容易。我假设基本配置,这就是你需要做的全部
Trace.PortFilter.ON
gem。 (放入捆绑并进行捆绑安装)foreman
的文件。 假设基本配置,这是Procfile
假设包含的内容
Procfile
然后自发地执行这两个命令,只需执行web: bundle exec rails server
worker: bundle exec sidekiq