ruby-on-rails - Sidekiq 未连接到 Rails

标签 ruby-on-rails ruby-on-rails-3 redis sidekiq

我在从 Resque 转换为 Sidekiq 时遇到问题。尽管 perform_async(ids) 没有向 Redis 添加任何内容,但我没有收到任何错误。我可以通过 Redis.current.append("test", "key") 将 key 直接添加到 Redis 服务器 我的 Sidekiq worker 也连接到 Redis 服务器,尽管当我请求 Sidekiq::Client.registered_workers 时我得到一个空数组 Web UI 仅显示骨架,除了 Redis 信息外没有其他信息。我不知道这是否重要但是 Sidekiq.redis { |conn| conn.info } 返回的信息对于我的本地 Redis 服务器来说都是正确的。虽然 Sidekiq.server? 返回一个 nil 值。

更新:当我执行 perform_async(args) 时,它返回一个字符串。

最佳答案

听起来您的 Sidekiq 配置没有为 Sidekiq 的客户端和服务器组件使用相同的 redis 配置。

客户端在您的 Rails 应用程序服务器中执行,而服务器是执行工作的独立进程。如果他们都没有通过 redis 配置使用相同的 redis 队列,则不会处理工作。

这是一个示例 config/initializers/sidekiq.rb 配置 block ,两个组件使用相同的 redis:

redis = { url: (ENV['REDIS_URL'] || 'redis://127.0.0.1'), namespace: 'sidekiq' }

Sidekiq.configure_server do |config|
  config.redis = redis
end

Sidekiq.configure_client do |config|
  config.redis = redis
end

我的猜测是您的客户端和服务器配置之间有不同的命名空间或配置。

关于ruby-on-rails - Sidekiq 未连接到 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777404/

相关文章:

mysql - MongoDB 与 MySQL

database - 在一行中显示 redis 中的所有键

ruby-on-rails-3 - 使用 Sidekiq 安排后台任务

ruby-on-rails - 基于条件的 Rails 路线

c# - 如何将 ProcessModel 添加到 ASP.NET Core Web 应用程序

heroku - 使用 Spring Cloud Connector for Heroku 连接多个 RedisLabs 数据库

ruby-on-rails - Rails 如何在保存后更新列?

css - Bower 和 Rails Assets 管道导入

ruby-on-rails - Rails Devise - 使用关联模型注册用户

html - 如何编写一个停止/中断无限循环 Rails 应用程序的 Web 按钮?