非同期の電子メール送信の問題を解決しています。私はバックエンドとしてセロリとdjangoデータベースを使用したいと思います。今のところ私がこのキュー管理ツールを使用したいのは、電子メールだけですから、私はdjango-celery-emailもインストールしました。私は、このような設定で、デフォルトのDjangoのSMTPを使用していdjango-celery-emailタスクが実行されていません
import djcelery
djcelery.setup_loader()
INSTALLED_APPS += ('kombu.transport.django',
'djcelery',
'djcelery_email')
BROKER_URL = 'django://'
EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'cs*****@gmail.com'
EMAIL_HOST_PASSWORD = '*********'
EMAIL_PORT = 587
私は両方のための移行を実行した命令の後、私は私の設定ファイルに、このような更新を行いました
djcelery
とkomby
アプリそして、デフォルトのdjango send_mail
コアメソッドを使用すると、電子メールは送信されません。
EMAIL_BACKEND
オプションを削除すると、メールが送信されますが、大変遅くなります。高速ではないにしても、私はこのプロセスを最初に待ち行列に入れることはしません。
MySQLデータベースをデータベースのバックエンドとして使用していますが、エラーログファイルにはタスクを追加する際に何も表示されませんでしたので、その部分は問題ありません。経験豊かなセロリやdjcelery
のユーザーが簡単に見つけられる基本的なインストールや設定の一部を見逃してしまったようですが、私のような初心者が逃した可能性があります。
UPDATE Djangoのシェル回避策:待機中の5分後に
>>> from django.core.mail import send_mail
>>> from django.conf import settings
>>> result = send_mail('test send', 'test_send_body_text', settings.EMAIL_HOST_USER, '[email protected]')
>>> result[0].status
u'PENDING'
>>> result[0].ready()
False
>>> result[0].failed()
False
>>> result[0].info
>>> result[0].result
(送信セロリの電子メールなしでは、通常約10〜15秒かかります)、私はまだ取得:
>>> result[0].status
u'PENDING'
と最後のチェックから15分後(20件):
>>> result[0].status
u'PENDING'
だから誰も私にこの問題を助けることができますか?私はそれが単純なものだと強く信じています。
よろしくお願いします。Sergey Aganezov。
現在のバックエンドでセロリなしでメールが送信されますか? –
うーん、正しく理解しているかどうかわからない。私が '' settings''ファイルに '' EMAIL_BACKEND''行をコメントすると、電子メールの送信はうまくいきますが、そのような表示要求を処理するのに多くの時間がかかります... –
また、この問題に遭遇しました。 0rc3とdjango-celery-email 1.1.4。 send_mailを呼び出すと、(RabbitMQ Web Adminインターフェイスを使用して)AMQPメッセージが送信されることが確認されたと思いますが、未知の理由でワーカーが受信していないようです(AMQPメッセージはキューに残ります)。私はタスクが正しく登録され、送信者とワーカーが両方とも同じブローカと話していることを確認しました。さらにデバッグする方法がわからない。 –