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