복붙노트

[REDIS] Heroku가와 RedisToGo에 Resque, Resque 서버,

REDIS

Heroku가와 RedisToGo에 Resque, Resque 서버,

나는 Resque & RedisToGo 잠시 지금은 Heroku가 (삼나무) 작업 (Resque 서버로) 얻을려고 노력했지만,이 오류로 실행 계속 :

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

그것의 로컬 작업, 그리고 내 앱 Heroku가 콘솔에 잘 레디 스에 액세스 할 수 있습니다.

내 Procfile가있다 :

web: bundle exec thin start -p $PORT -e $RACK_ENV
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
resque: env TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10 bundle exec rake resque:work

내 Gemfile이있다 :

gem 'redis'

#Background queue
gem 'resque', '~> 1.22.0', :require => "resque/server"

lib 디렉토리 / 작업 / resque.rake :

require 'resque/tasks'

task "resque:setup" => :environment do
  ENV['QUEUE'] = '*'
end

desc "Alias for resque:work (To run workers on Heroku)"
task "jobs:work" => "resque:work"

routes.rb :

  mount Resque::Server.new, :at => "/resque" 

초기화 : redis.rb :

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS

resque.rb :

Dir["#{Rails.root}/app/workers/*.rb"].each { |file| require file }
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }

다음 내 응용 프로그램 / 노동자 디렉토리에 나는 myjob.rb 같은 뭔가를

내가 여기 원에서 아이디어를가는 것 같은 느낌?

해결법

  1. ==============================

    1.나는 당신의 Procfile 오타가 있다고 생각. 왜 두 개의 웹 프로세스를해야합니까? 나는 하나의 고수와 유니콘 사용하십시오.

    나는 당신의 Procfile 오타가 있다고 생각. 왜 두 개의 웹 프로세스를해야합니까? 나는 하나의 고수와 유니콘 사용하십시오.

    웹 : 번들 간부 유니콘 -p $ PORT -c ./config/unicorn.rb

    resque와 유니콘 사용하는 경우, 당신은 resque 레디 스 연결마다 유니콘 포크를 정의해야합니다. 다음은 관련 파일입니다.

    설정 / 초기화 / redis.rb

    uri = URI.parse(ENV["REDIS_WORKER"])
    REDIS_WORKER = Redis.new(host: uri.host, port: uri.port, password: uri.password)
    

    설정 / 초기화 / resque.rb

    Resque.redis = REDIS_WORKER
    

    설정 / unicorn.rb

    before_fork do |server, worker|
      if defined?(Resque)
        Resque.redis.quit
        Rails.logger.info("Disconnected from Redis")
      end
    end
    
    after_fork do |server, worker|
      if defined?(Resque)
        Resque.redis = REDIS_WORKER
        Rails.logger.info("Connected to Redis")
      end
    end
    

    전체 unicorn.rb이 요점을 참조하십시오

  2. from https://stackoverflow.com/questions/12256476/resque-resque-server-on-redistogo-with-heroku by cc-by-sa and MIT license