首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sidekiq工人排队,但与Sidetiq配对时未完成

Sidekiq工人排队,但与Sidetiq配对时未完成
EN

Stack Overflow用户
提问于 2014-05-14 00:37:26
回答 1查看 2.1K关注 0票数 2

我有一个Sidekiq工作人员,它将Rails 3.2应用程序的数据与远程数据库同步。当我只是从rails控制台执行它时,一切都如预期的那样工作。我可以验证它是否连接到远程DB,并获取我所期望的数据。

我尝试设置以下内容的那一刻:

代码语言:javascript
复制
recurrence {daily.hour_of_day(20).minute_of_hour(02)}

我在Sidekiq中看到以下情况,但没有完成/执行的迹象:

代码语言:javascript
复制
2014-05-14T00:02:18Z 6747 TID-dvc2c INFO: [Sidetiq] Enqueue: BackendWorker (at: 1400112120.0) (last: -1.0)

目前,我已经将重试设置为false (我想要更改),并且在重新设置另一个测试运行之前,我尝试清除redis中的任何内容。

有没有办法更多地了解正在发生的事情呢?是否有一个Sidekiq标志可以用来获取一些额外的调试信息?

提前感谢

环境:

  • Rails 3.2
  • Ruby 2.1
  • 边线0.5.0
  • Sidekiq 2.17.7 (由于使用3.0的问题)

更新(2014年5月14日):

我决定用Sidetiq测试一个简单的示例,只需要一个使用ActiveRecord创建DB条目的工作人员:

代码语言:javascript
复制
class BackendTest
  include Sidekiq::Worker
  include Sidetiq::Schedulable
  sidekiq_options :retry => false, :backtrace => true

  recurrence {
    daily.hour_of_day(11).minute_of_hour(05)
  }

  def perform
    Book.create(title: "test", author: "testing", price: 9.99)
  end
end

我做的另一个实验就是试图让Sidetiq和Sidekiq在logger.info中展示一些东西:

代码语言:javascript
复制
class BackendTest
  include Sidekiq::Worker
  include Sidetiq::Schedulable
  sidekiq_options :retry => false, :backtrace => true

  recurrence {
    daily.hour_of_day(16).minute_of_hour(00)
  }

  def perform
    logger.info "test"
    logger.info "test"
  end
end

作业仍然没有启动或完成就进入默认队列。如果我只是用perform_asyncSidekiq::Client.pushSidekiq::Client.enqueue从rails控制台启动它,那么一切仍然可以在控制台上工作。

在这一点上,我是一个完全搞不懂的新手。

输出:

2014-05-14T20:08:41Z 2149 TID-dfcfk BackendTest JID-6bc7ba08955f8340903f9063 INFO: start 2014-05-14T20:08:41Z 2149 TID-dfcfk BackendTest JID-6bc7ba08955f8340903f9063 INFO: test 2014-05-14T20:08:41Z 2149 TID-dfcfk BackendTest JID-6bc7ba08955f8340903f9063 INFO: test 2014-05-14T20:08:41Z 2149 TID-dfcfk BackendTest JID-6bc7ba08955f8340903f9063 INFO: done: 0.002 sec

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-16 17:56:50

在github上浏览了其他人的项目之后,我看到了一些有趣的东西,并尝试了一下,它似乎解决了我在Sidetiq上的问题。

我创建了/config/initializers/sidekiq.rb,其中包含以下内容:

代码语言:javascript
复制
Sidekiq.configure_server do |config|
  config.redis = { :url => 'redis://localhost:6379/3', :namespace => 'sidekiq' }
end

Sidekiq.configure_client do |config|
  config.redis = { :url => 'redis://localhost:6379/3', :namespace => 'sidekiq' }
end

作业任务按预期进行排队和执行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23643827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档