首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask-Mail和Redis队列库集成出现错误

Flask-Mail和Redis队列库集成出现错误
EN

Stack Overflow用户
提问于 2012-07-18 01:08:36
回答 1查看 1.1K关注 0票数 1

我正在使用Flask-Mail扩展来启用应用程序中的邮件发送。我不能让芹菜与flask一起工作,所以我查找了一些其他的库,找到了Redis Queue

代码:

代码语言:javascript
复制
     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中发送邮件失败,并给出以下错误:

代码语言:javascript
复制
    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应用程序,因此出现了错误。如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2012-07-18 22:53:57

您正在尝试将mail对象实例的send方法入队,而RQ无法将实例方法入队。如果您查看页面底部的文档,它会提到这一点:

http://python-rq.org/docs/

比如..。

代码语言:javascript
复制
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'
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11527413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档