[英]Heroku scheduler with Sidekiq and redis
我在Rails 3.2上有一個應用程序,該應用程序與unicorn
一起部署在Heroku
上。 它要求每小時執行一次作業。 因此,我添加了heroku提供的Heroku Scheduler
Addon。
我還將Sidekiq
和Redis
與我的應用程序集成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.