[英]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.