2

私は完全に混乱していて、これを行う方法がわかりません。私の説明/情報が悪い場合はご容赦ください。

だから私は、django-notificationを介して通知を行うか、ebayのようにユーザーの投稿が終了したときにユーザーの1人に電子メールを送信することを言いたいと思います。私のデータベースには、投稿が終了する日時を保存するモデルがありますが、現在の時刻がユーザーに警告するようにシステムに警告する信号などを効果的にチェックまたは保存する方法がわかりません。 >終了日時より。

ありがとう!

投稿が終了した秒後にメール/通知を送信したいので、スケジューラを使用して投稿が終了したかどうかを確認することはできないと思います。毎秒のように確認する必要があるため、これは非効率的すぎると思います。 、しかし私が上で言ったように、私は何についてもよくわかりません...

4

3 に答える 3

1

django-celeryを使用できます-であるかどうかをチェックするpost_saveハンドラーを接続し、そうである場合createdは、正しい時間にユーザーに通知するTrueスケジュールを設定します(キーワードargを使用)。Tasketa

于 2011-08-11T02:49:23.783 に答える
0

あなたは少なくともいくつかの解決策を考えてきたように私には聞こえます。ただし、覚えておくべきことの1つは、WebフレームワークであるDjangoはステートレスな「マシン」であるということです。一言で言えば、投稿が期限切れになるのは一瞬で「実行」されていないことを意味します(つまり、投稿が期限切れになる一瞬でブラウザからリクエストが送信されていると想定することはできません)。これは、Djangoを使用して通知を通知/送信することは適切ではないことを意味します。

ただし、メールをいつ送信するかが正確にわかっているため、投稿が作成されるとすぐにDjangoで通知をキューに入れることができるはずです。外部の「プログラム」の中には、実際に通知を送信するためにキューを処理する必要があるものがあります...これを行うにはあらゆる種類の創造的な方法がありますが、Pythonを使用して行うことができます。

メッセージキューの使用を検討する場合は、RabbitMQhttp ://nathanborror.com/posts/2009/may/20/working-django-and-rabbitmq/を参照してください。

于 2011-08-11T03:00:45.213 に答える
0

他の人が言っているように、最善の解決策はdjango-celery(https://github.com/ask/django-celery)ですが、リソースが不足している場合は少し重いです。

同様のニーズで、条件をチェックして必要な操作を実行するミドルウェアがあります(私の場合、データベースの一部のレコードのブール値を変更しているだけです)。これは、誰かが実際にデータにアクセスするまでデータを変更する必要がなく、「タスク」が1つのUPDATEクエリであるため、耐え難い負荷ではないため、私にとってはうまくいきます。

それ以外の場合は、短い時間(1分?5分?)ごとにcronジョブを設定し、条件を確認して結果を出すことができます。

于 2011-08-11T06:44:13.083 に答える