0

Heroku でホストされているセロリを使用して、Django アプリのスケジュールされたタスクをいくつか設定しようとしています。すべてをどのように構成する必要があるかわからないことは別として、これにアプローチする最良の方法は何ですか?

ユーザーが選択した時間に毎日の電子メールを受信することを選択できるとします。

5分ごとに実行するスケジュールされたジョブが必要ですか。その時点で電子メールの送信を希望するすべてのユーザーを検索して、電子メールを送信しますか?

また

ユーザーがプリファレンスを設定するときに、各ユーザーのタスクをスケジュールします。(実際にこれをどのように実装するかはまだわかりません)

4

2 に答える 2

1

どの程度の精度が必要かによって異なります。ユーザーに時間を分単位で選択してもらいたいですか? 2番目?または、メールを送信したい時間を選択できるようにするだけで十分です。

正時で十分正確な場合は、1 時間ごとにユーザーがメールを送信するようにポーリングするタスクを使用します。

ユーザーが秒単位で正確にメールを送信する必要がある場合は、その秒単位で完了するように各ユーザーにタスクを設定します。

その間のすべては、個人の選択に帰着します。何をするのがより快適で、さらに重要なことは、失敗モードが最も少ない最も単純なコードを生成するものは何ですか?

于 2013-04-08T02:59:28.370 に答える
0

最初のオプション (未処理のジョブを検索するスケジュールされたジョブ) をお勧めします - スケーリングと管理が簡単です。何千人ものユーザーがいるとしたら、メールを送信するためだけに多くのタスクが必要になります。

データベースを celery ブローカーとして使用する場合、django-celery に組み込まれている cron のようなスケジューリングを使用できます。これにより、タスクを動的に作成および破棄できます。ただし、ブローカーに DB を使用するのは好きではありません。

また、クロノスをチェックすることもできます

于 2013-04-08T05:06:11.390 に答える