2

モデルにシグナルを追加しました。これは、モデルが保存されると (models.signals.post_save.connectシグナルおよびsend_mail電子メール送信用に)、いくつかの電子メール アドレスに電子メールを送信します。この考えは、ユーザーがモデルをサイトに保存するときに、すべての電子メールが送信されるまで待たなければならず、サーバーからの応答を受信するまで、ユーザーに遅延をもたらします。

シグナルを試す前に、モデルの保存メソッドをラップしようとしましたsuper(Foo, self).save(*args, **kwargs)が、メールを送信した後でした。この遅延の経験は、その方法でも発生していました。

サイトのユーザーに遅延を表示することなく、メール送信アクションをバックグラウンドで実行したいだけです。

これはどのように解決できますか?

4

2 に答える 2

2

応答の遅延を避けるために、これを別のプロセスで非同期に行う必要があります。

この質問は、それを処理する方法に関するものです: Python/Django とメッセージ キューに関するアドバイス

于 2010-02-28T00:16:48.323 に答える
1

最も簡単な方法は、電子メール メッセージをキューに入れ、デーモンによって送信することです。django-mailer をチェックしてください。

あなたは send_mail だけに関心があるように見えるので、2 つのステップから始めることができます。最初に、これを使用して django-mailer の send_mail のバージョンをインポートします。

# favour django-mailer but fall back to django.core.mail
from django.conf import settings

if "mailer" in settings.INSTALLED_APPS:
    from mailer import send_mail
else:
    from django.core.mail import send_mail

そしてmanage.py send_mail、メールを送信するために呼び出す cronjob を作成します。cronjob エントリの例については、django-mailer の使用法ドキュメントを確認してください。

メールが送信されていない場合はmanage.py send_mail、コンソールで実行してみてください。これは、人々が抱える最大の問題のようです。

于 2010-02-28T01:14:00.677 に答える