1

バックグラウンド ジョブに Resque + RedisToGo を使用しています。Heroku でバックグラウンド タスクを実行できません。初めてバックグラウンド ジョブを実行すると、問題なく実行されるため、これは奇妙です。しかし、もう一度実行すると、実行されません。バックグラウンドを正常に完了するには、毎回「heroku restart」を実行する必要があります....

例えば。Resque バックグラウンド アクションに次のコードがあるとします。

module EncodeSong
  @queue = :encode_song

  def self.perform(media_id, s3_file_url)
    puts 'foobar'

    media = Media.find(media_id)

    puts 'media id is supposed to be here'
    puts media.id
    puts s3_file_url
  end
end

「heroku コンソール」では、次のことを行います。

Resque.enqueue(EncodeSong, 26, 'http://actual_bucket_name.s3.amazonaws.com/unencoded/users/1/songs/test.mp3')

上記のコードを初めて実行すると、「heroku ログ」に 4 つの「プット」が表示されます。しかし、もう一度実行すると、「foobar」のみが返されます。他の「プット」は表示されません.....

2回目は「media = Media.find(media_id)」を実行できないのではないかと思います。これは、Heroku の本番サーバーでのみ発生しています。私たちのローカル開発マシンでは、この問題は発生しません....何が問題なのか知っている人はいますか?

PS。Heroku ログを有効にしようとしましたが、有用な応答が得られません。このチュートリアルに従って、Resque で Heroku をセットアップしました

4

1 に答える 1

0

あなたの仕事は失敗しているようです (おそらく、'media = Media.find' 行については正しいでしょう)。resque 管理インターフェイスを調べます。失敗したジョブを探します。失敗した各ジョブのバックトレースが見つかります。

お役に立てれば。

于 2011-04-19T02:33:43.077 に答える