【问题标题】:Resque Scheduler sending to queue but not processingResque调度程序发送到队列但不处理
【发布时间】:2014-05-10 00:06:59
【问题描述】:

我在我的开发环境中启动并运行 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 是因为 heroku 推荐它用于 resque。

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

【问题讨论】:

    标签: heroku resque resque-scheduler


    【解决方案1】:

    哇偶然发现了一个解决方法。

    将我的 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
    

    我做的最后一件事是在我的调度程序上放大一个测功机

    heroku ps:scale scheduler=1
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多