0

私のresqueシステム(Sinatraベースだけのレールはありません)には次の構成があり、ymlファイルから多数の定期的なジョブがスケジュールされています

resque (1.23.0)
resque-scheduler (2.0.0)
resque-status (0.4.0)

定期的なスケジュールは[スケジュール]タブに表示され、[今すぐキュー]ボタンをクリックすると、ステータスが[ステータス]タブにも表示されます。問題は、定期的なジョブが自動的に実行されたときに、に表示されないことです。 [ステータス]タブ..私のresque_schedule.ymlは次のようになります

email_notifier:
  every: 5m
  custom_job_class: Process_Notification_Emails
  queue: email_notifier
  args: 
  description: "Process mail notifications"

注:これらのスケジュールされたジョブは実際には5分ごとに実行され、期待どおりに動作しています。私が抱えている唯一の問題は、手動でキューに入れない限り、[ステータス]タブに表示されないことです。

私がここで間違っていることは何ですか?

4

1 に答える 1

1

resque-status(およびその他のカスタムジョブ)のサポート

resque-statusなどの一部のResque拡張機能は、APIシグネチャがわずかに異なるカスタムジョブクラスを使用します。Resque-schedulerは、既存および将来のすべてのカスタムジョブクラスをサポートしようとしているわけではありません。代わりに、スケジュールフラグをサポートしているため、カスタムクラスを拡張して、スケジュールされたジョブをサポートできます。

FakeLeaderboardというJobWithStatusクラスがあるとしましょう。

class FakeLeaderboard < Resque::JobWithStatus
  def perform
    # do something and keep track of the status
  end
end

そしてスケジュール:

create_fake_leaderboards:
  cron: "30 6 * * 1"
  queue: scoring
  custom_job_class: FakeLeaderboard
  args:
  rails_env: demo
  description: "This job will auto-create leaderboards for our online demo and the status will update as the worker makes progress"

拡張機能がスケジュールされたジョブをサポートしていない場合は、カスタムジョブクラスを拡張して#scheduledメソッドをサポートする必要があります。

module Resque
  class JobWithStatus
    # Wrapper API to forward a Resque::Job creation API call into
    # a JobWithStatus call.
    def self.scheduled(queue, klass, *args)
      create(*args)
    end
  end
end

https://github.com/bvandenbos/resque-scheduler#support-for-resque-status-and-other-custom-jobs

于 2012-11-19T20:15:56.917 に答える