我在 Rails 3.2 上有一个应用程序,它部署Heroku
在unicorn
. 它需要每小时执行一个作业。所以我添加Heroku Scheduler
了heroku提供的插件。
我还集成Sidekiq
了Redis
我的应用程序。
以下是代码片段:
配置/初始化程序/sidekiq.rb
Sidekiq.configure_server do |config|
config.redis = { url: ENV["OPENREDIS_URL"] }
end unless ENV['OPENREDIS_URL'].blank?
配置/独角兽.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 调度程序任务中。其他后台工作运行良好。