3

Rails3.2.3とHerokuでアプリにいくつかの機能を設定します。アイデアは、タスクまたはジョブ(またはそれを呼び出したいもの)を毎日実行して、外部APIからのユーザー情報がデータベース内のユーザー情報と最新であることを確認することです。これを設定するための最良の方法は何ですか?rakeタスクを実行するのはcronジョブである必要がありますか?

これを行うにはかなりの数の方法があるようで、私は他の人がこれを行う方法に興味があります。私が考えることができる唯一の方法は、cronジョブでrakeタスクを実行することですが、ベストプラクティス、またはそれを実行するための最も簡単な方法を理解したいと思います。この猫の皮を剥ぐ方法はたくさんあるようです...そこにもたくさんの異なるツールがあります。

これを行うための純粋なレールの方法があれば、それが良いと思うので、アプリを配置するすべてのシステムをいじくり回す必要はありません。

4

4 に答える 4

2

2つのオプションがあります。彼らはあなたがあなたの質問で言及したオプションよりも優れています

  1. Resque
  2. Sidekiq

後者を試してください。より高速で軽量で、マルチスレッドに基づいているため、システムに干渉することはありません。毎日処理するには、両方のgemのスケジューラーを調べる必要があります。

お役に立てれば!

于 2012-08-01T01:36:12.007 に答える
2

ハンドルスケジューリング自体にHerokuスケジューラアドオンを使用します。rakeタスクやresqueなどを実行させることができます。

于 2012-08-01T06:59:38.263 に答える
2

1日に1回実行される単純な同期ジョブの場合、cronジョブがあれば十分であり、長期的にはより安定している可能性があります。

正直なところ、ResqueやSidekiqなどのソリューションは、私の意見では少しやり過ぎです(あなたのニーズにとって)。これらのシステムにメッセージを送信するには、スケジューラを使用する必要があります。

crontabのデプロイと作成を簡単にすることを検討している場合は、gem'when'をチェックしてください:https//github.com/javan/whenever/

「いつでも」に関するRailscast:http: //railscasts.com/episodes/164-cron-in-ruby

于 2012-08-01T13:40:06.393 に答える
1

ここから選択するものがいくつかあります:

  1. resqueresque-schedulerを使用します。ただし、redisを使用する必要があります)
  2. rufus-scheduler(単純なものが必要な場合、resqueはrufus-scheduler自体を使用します)
  3. このようないくつかのトリックでdelayed_jobを試すことができます。スケジューリングにはそれほど適していませんが、アプリケーションデータベースを使用できます。
于 2012-08-01T06:39:36.900 に答える