2013-06-10 12 views
7

私は定期的なメールをチームに送る必要のある旅行会社に勤めています。Celery-Django:Celeryとdjangoの管理コマンド

これまで、私はdjango管理コマンドを使用しており、crontabを使ってそれらを実行しています。 セロリが何をすることができるかについて私は読んでいましたが、理解するのが本当に難しいと感じています なぜセロリを使うべきですか?

私のdjangoプロジェクトに加えて、データベース にもう1つ追加されているので、パフォーマンスが低下しますか?

答えて

5

私はあなたとは思わないはセロリを使用してください、あなたのケースではまだCronは私にはうまく聞こえますが、セロリーを試してみたいかもしれません。

私にとって、Celeryは[非同期] [分散]タスクキュー用のPythonモジュールです。これにより、長いマシンを複数のマシンで実行している複数のプロセスにディスパッチすることができます(ただし、1つのマシン上の1つのプロセスは正常です)。 (サムネイルを生成したり、外部APIに話したり、複雑なレポートを生成するなど)時間がかかることが必要な場合は、Celeryを使用して、ユーザーのHTTP要求をブロックせずにバックグラウンドでこれを実行できます。 crontabのオーバーセロリの

いくつかの利点:

  • あなたは自由に少なくとも一つのセロリの労働者がある正確にいつ、非同期タスクを実行することができます
  • それは
  • celerybeatがある複数のプロセス/マシンにうまくスケールん
  • crontabのように。しかし、あなたはあなたにまともなを与えるFlowerのような監視ツールがある
  • あなたは(優先順位付けのいくつかの並べ替えのためなど)レート制限を適用することができます
  • あなたのsettings.pyにPythonの構文を使用して、指定された日時や間隔でタスクをスケジュールすることができますタスクが失敗していると何がセロリの

いくつかの欠点成功しているかのアイデア:

  • セットアップには時間がかかることができます - セットアップキューブローカーにあなたが持っていると生産に労働者を悪者扱いします。 cronはすでにそこに存在するでしょう
  • 各ワーカープロセスはDjangoプロセスと同じ量のRAMを使用する可能性があります。これはあなたに$を払うか、単にAWSフリー層でセロリを実行するのに十分なRAMがないかもしれません。

また、電子メールを送信する場合は、Postmark(私はそれらに所属していません)のような有料サービスの使用を検討することができます。これは電子メールの処理を処理します。