我有一个Sidekiq工作人员,它将Rails 3.2应用程序的数据与远程数据库同步。当我只是从rails控制台执行它时,一切都如预期的那样工作。我可以验证它是否连接到远程DB,并获取我所期望的数据。
我尝试设置以下内容的那一刻:
recurrence {daily.hour_of_day(20).minute_of_hour(02)}我在Sidekiq中看到以下情况,但没有完成/执行的迹象:
2014-05-14T00:02:18Z 6747 TID-dvc2c INFO: [Sidetiq] Enqueue: BackendWorker (at: 1400112120.0) (last: -1.0)目前,我已经将重试设置为false (我想要更改),并且在重新设置另一个测试运行之前,我尝试清除redis中的任何内容。
有没有办法更多地了解正在发生的事情呢?是否有一个Sidekiq标志可以用来获取一些额外的调试信息?
提前感谢
环境:
更新(2014年5月14日):
我决定用Sidetiq测试一个简单的示例,只需要一个使用ActiveRecord创建DB条目的工作人员:
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中展示一些东西:
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_async、Sidekiq::Client.push和Sidekiq::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
发布于 2014-05-16 17:56:50
在github上浏览了其他人的项目之后,我看到了一些有趣的东西,并尝试了一下,它似乎解决了我在Sidetiq上的问题。
我创建了/config/initializers/sidekiq.rb,其中包含以下内容:
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作业任务按预期进行排队和执行。
https://stackoverflow.com/questions/23643827
复制相似问题