1

開発環境で resque と resque スケジューラを起動して実行しましたが、heroku にデプロイすると、スケジューラが機能していないように見えます。遅延状態のままで、キューに移動されることはありません。

ここに私の初期化子 resque.rb があります

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

require 'resque_scheduler'
require 'resque_scheduler/server'

Resque::Server.use(Rack::Auth::Basic) do |user, password|
  password == "Mysecret"
end

ここに私のresque.rakeファイルがあります

require "resque/tasks"
require 'resque_scheduler/tasks'

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

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

私のビデオコントローラーの作成アクションはこれを行っています

def create
    @video = current_user.videos.build(video_params)
    if @video.save
      if @video.emailfans == true
        Resque.enqueue_at(10.seconds.from_now, NewvideoNotify, @video.id)
      end
      redirect_to @video, notice: 'Video was successfully Posted!'
    else
      render action: 'new'
    end
  end

私は Procfile を使用しています。これは、resque 用に heroku が推奨したためです。

resque: env TERM_CHILD=1 RESQUE_TERM_TIMEOUT=7 bundle exec rake resque:work
4

1 に答える 1

4

うわー、これの修正に出くわしました。

私のresque.rakeファイルをこれに変更しました

require "resque/tasks"
require 'resque_scheduler/tasks'

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

task "resque:scheduler_setup" => :environment

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

これもプロフィールに追加しました

scheduler: bundle exec rake resque:scheduler

私が最後にしたことは、スケジューラーの dyno をスケールアップすることでした

heroku ps:scale scheduler=1
于 2014-05-10T05:34:28.367 に答える