簡體   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