Resque Scheduler:针对当前环境跳过突出显示的作业。生产Heroku

时间:2017-05-10 15:17:20

标签: ruby-on-rails heroku resque procfile resque-scheduler

我正在努力让我的应用程序在生产中工作。 我有一个后台作业设置和一个静态调度程序(resque和resque_scheduler)。在localhost上工作和排队工作没有任何问题。在heroku上,作业显示在resque_scheuler中我们的UI但从未被处理过。它说"针对当前环境跳过突出显示的作业。"。如图所示,作业标记为黄色。 scheduler web ui with highlighted worker

这是我的工作,scheduele和procfile

tweet_sender.rb(工作)

class TweetSender
    @queue = :tweets_queue 

    def self.perform(tweet_id)
        @user = User.all
        @user.each do |u|
            current_user = u.id
            twt = Tweet.where(user_id: u.uid).where(status_id: 0).order(:created_at, :id).first
            if twt
                twt.status_id = 1
                twt.save
                client = u.twitter_client_from_user
                client.update(twt.text)
        end
    end
  end
end

tweet_schedule.yml

tweet_sender:
  every:
    - "30s"
    - :first_in: '10s'
  class: "TweetSender"
  queue: tweets_queue
  args: tweet_id
  rails_env: development
  description: "This job sends daily tweets from the content db"

Procfile

web: bundle exec rails server -p $PORT
resque: env TERM_CHILD=1 COUNT=1 QUEUE=* bundle exec rake resque:work 
worker: bundle exec rake environment=production resque:work COUNT=1 QUEUE=*
scheduler: bundle exec rake environment=production resque:scheduler

我查看了文档,但找不到任何解释。有没有人知道为什么这个工作被突出显示以及如何将它带到scheduele。

1 个答案:

答案 0 :(得分:0)

我认为这是因为您将tweet_schedule.yml作业设置为仅在rails_env: development上运行。为了让您的工作在多个环境中运行(让我们也说生产),您必须将其设置为rails_env: development, production

tweet_sender:
  every:
    - "30s"
    - :first_in: '10s'
  class: "TweetSender"
  queue: tweets_queue
  args: tweet_id
  rails_env: development, production
  description: "This job sends daily tweets from the content db"