0

Thingデータベースに挿入されたそれぞれにarchive属性があります。0 に設定すると、何も起こりません。ただし、そうでない場合は、キューに追加して処理する必要があります。

大量のリクエストが送信されて処理されるため、アーカイブにThingは 3 ~ 30 秒かかります。だから私の質問は、私はそうするのですか:

  1. aThingarchive1 に設定されたら、Rake タスクによって頻繁に (15 分ごとに) 処理されるようにキューに入れ、archive属性を 2 に設定して、再度処理されないようにします。
  2. do_archiveメソッドを作成しThing、保存するときに を実行し、そのすべてを処理self.delay.do_archiveさせてくださいdelayed_job

Things処理する必要のないものもあれば、アーカイブは時間的に重要なものではありません。私の直感では、delayed_job毎日真夜中にスクリプトを実行するのではなく、時間に固有ではなく、キューを通過するだけなので、おそらくより良いアイデアです。

4

1 に答える 1

1

最後の段落でそれをかなり釘付けにしたと思います。それが時間に依存し、イベント駆動型ではない場合は、cron の方が理にかなっています。ただし、発生してキューに入れることができるイベントがあり、時間に依存しない場合は、バックグラウンド ジョブを使用します。

考慮すべきことの 1 つは、実際のメッセージング システムの方が理にかなっているのかどうかということです。現在の場所では、 RabbitMQのようなものはやり過ぎかもしれませんが、他にも簡単なオプションがあります。SidekiqまたはResqueは、バックグラウンド ジョブをより詳細に制御し、delayed_job のシンプルさとメッセージング システムの堅牢性を提供する 2 つの一般的なオプションです。

于 2013-03-09T15:25:46.487 に答える