繁体   English   中英

使用Sidekiq和Redis的Heroku调度程序

[英]Heroku scheduler with Sidekiq and redis

我在Rails 3.2上有一个应用程序,该应用程序与unicorn一起部署在Heroku上。 它要求每小时执行一次作业。 因此,我添加了heroku提供的Heroku Scheduler Addon。

我还将SidekiqRedis与我的应用程序集成Sidekiq

以下是代码片段:

配置/初始化/ sidekiq.rb

Sidekiq.configure_server do |config|
  config.redis = { url: ENV["OPENREDIS_URL"] }
end unless ENV['OPENREDIS_URL'].blank?

配置/ unicorn.rb

worker_processes 2
timeout 30
preload_app true

before_fork do |server, worker|
  # Replace with MongoDB or whatever
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.connection.disconnect!
    Rails.logger.info('Disconnected from ActiveRecord')
  end

  Rails.logger.info('Disconnected from Redis')

  sleep 1
end

after_fork do |server, worker|
  # Replace with MongoDB or whatever
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.establish_connection
    Rails.logger.info('Connected to ActiveRecord')
  end

  Sidekiq.configure_client do |config|
    config.redis = { url: ENV["OPENREDIS_URL"] }
  end unless ENV['OPENREDIS_URL'].blank?

  Rails.logger.info('Connected to Redis')
end

问题是:每当执行我在Heroku Scheduler中提到的rake任务时,都会产生以下错误:

Redis::CannotConnectError: Error connecting to Redis on localhost:6379 (ECONNREFUSED)

试图找出这里有什么问题?

更新:附带说明,它仅在Heroku调度程序任务中发生。 其他后台作业运行正常。

最后,通过将Sidekiq客户端配置添加到sidekiq.rb使其正常工作。

Sidekiq.configure_server do |config|
  config.redis = { url: ENV["OPENREDIS_URL"] }
end unless ENV['OPENREDIS_URL'].blank?

Sidekiq.configure_client do |config|
  config.redis = { url: ENV["OPENREDIS_URL"] }
end unless ENV['OPENREDIS_URL'].blank?

一种选择是将URL保留为空,并将REDIS_PROVIDER环境变量设置为OPENREDIS_URL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM