我正在使用Flask-Mail扩展来启用应用程序中的邮件发送。我不能让芹菜与flask一起工作,所以我查找了一些其他的库,找到了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应作为实例方法发送。
现在有了不同的问题。我收到邮件对象没有任何属性app的错误信息。我猜rq的新进程不知道我的flask应用程序,因此出现了错误。如何解决这个问题?
发布于 2012-07-18 22:53:57
您正在尝试将mail对象实例的send方法入队,而RQ无法将实例方法入队。如果您查看页面底部的文档,它会提到这一点:
http://python-rq.org/docs/
比如..。
from flask.ext.mail import Mail,Message
from rq import Queue
mail = Mail()
q = Queue()
def queue_mail(msg):
mail.send(msg)
@mod.route('/test')
def m11():
msg = Message("Signup Successfull",
recipients=['abc@gmail.com'])
msg.body = "Hello there, Welcome!"
q.enqueue(queue_mail, msg)
return 'done'https://stackoverflow.com/questions/11527413
复制相似问题