Flask-Mail 拡張機能を使用して、アプリでメールを送信できるようにしています。フラスコでセロリを動作させることができなかったので、他のライブラリを調べてRedis Queueを見つけました。
コード:
from flask.ext.mail import Mail,Message
from rq import Queue
mail = Mail() # mail.init_app(app) is done in top app.py
q = Queue()
@mod.route('/test')
def m11():
msg = Message("Signup Successfull",
recipients=['abc@gmail.com'])
msg.body = "Hello there, Welcome!"
q.enqueue(mail.send, msg)
return 'done'
コードを実行すると、rqworker でメール送信が失敗し、次のエラーが発生します。
17:04:49: *** Listening on default...
17:06:08: default: flaskext.mail.send(<flaskext.mail.message.Message object at
0x1027a9750>) (8c86f0f9-ae76-4297-bf17-a171a67f1b44)
17:06:08: 'module' object has no attribute 'send'
17:06:08: Moving job to failed queue.
このエラーの原因は何ですか?
編集: send がインスタンス メソッドであるため、属性 send はありませんでした。
今は別の問題があります。Mail オブジェクトに app 属性がないというエラーが表示されます。rq の新しいプロセスは私のフラスコアプリを認識していないため、エラーが発生したと思います。この問題を解決するには?