質問

私は、モデルが保存されると(メール送信のためのmodels.signals.post_save.connect信号とsend_mailを経由して)いくつかの電子メールアドレスに電子メールを送り、私のモデルに信号を追加しました。このアイデアは、まだ彼らはサイトでモデルを保存するとき、彼らは、サーバーからの応答を受信したときに、これらすべての電子メールが送信され、ザッツされるまで待たなければならない、ユーザーのための遅延を行います。

信号を試みる前に、私は私のモデルの保存方法をラップしようとしていた、とsuper(Foo, self).save(*args, **kwargs)後、私は電子メールを送信していました。この遅延の経験があまりにもその方法で起こっていた。

私は単に私の電子メールは、サイトのユーザーに遅延を表示せずに、バックグラウンドで実行されるアクションを送信します。

これは解決することができますか?

役に立ちましたか?

解決

最も簡単な方法は、電子メールメッセージをキューイングすることであり、そしてそれらは、デーモンによって送られてきました。 ジャンゴ・メーラーをチェックします。

あなただけsend_mailに関係しているように見えるので、

は、次の2つの手順を始めることができます。まず、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を呼び出し、cronジョブを作成します。 ジャンゴ・メーラーの使用状況のドキュメントは、例えば、cronジョブのためをチェックエントリーます。

あなたはすべての電子メールのgetて送信が表示されない場合は、

、コンソール上でmanage.py send_mailを実行してみてください。これは、人々が持っているナンバーワンの問題のようです。

他のヒント

応答に遅延を避けるために、あなたは別のプロセスで非同期にこれをしたい。

この質問は、ということをどのように扱うかについてです:Pythonの/ Djangoの上アドバイスとメッセージキュー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top