Flask-Mail - 超时和错误? [Errno - 3] 发送邮件时

时间:2021-04-06 10:32:57

标签: heroku eventlet flask-mail

我目前正在尝试让 Flask-Mail 在 heroku 上工作,但一直遇到各种问题。

一般代码是这样的:

from threading import Thread
from flask import render_template, current_app
from flask_mail import Message
from app import mail


def send_async_email(app, msg):
    with app.app_context():
        mail.send(msg)
        print("message sent)



def send_email(subject, sender, recipients, text_body, html_body):
    msg = Message(subject, sender=sender, recipients=recipients)
    msg.body = text_body
    msg.html = html_body
    Thread(target=send_async_email, args=(current_app._get_current_object(), msg)).start()

差不多是这样: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-x-email-support

现在我的问题似乎是当我在 heroku 上运行它时。 在我的机器/开发环境中,代码运行良好,我得到了“已发送消息”打印语句,虽然我的收件箱中没有收到电子邮件,但这很好,它执行时没有错误,我可以解决缺少电子邮件的问题在我设法让它在 Heroku 上以与在我的开发机器上相同的方式执行之后到达..

当我在 Heroku 上运行相同的代码时,我在日志中收到以下消息:

2021-04-06T10:14:41.736652+00:00 app[web.1]: Exception in thread Thread-2:

2021-04-06T10:14:41.736661+00:00 app[web.1]: Traceback (most recent call last):

2021-04-06T10:14:41.736662+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 425, in resolve

2021-04-06T10:14:41.736662+00:00 app[web.1]:     use_network=use_network)

2021-04-06T10:14:41.736663+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 380, in query

2021-04-06T10:14:41.736663+00:00 app[web.1]:     return end()

2021-04-06T10:14:41.736664+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 359, in end

2021-04-06T10:14:41.736664+00:00 app[web.1]:     raise result[1]

2021-04-06T10:14:41.736664+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 340, in step

2021-04-06T10:14:41.736665+00:00 app[web.1]:     a = fun(*args, **kwargs)

2021-04-06T10:14:41.736665+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/dns/resolver.py", line 1091, in query

2021-04-06T10:14:41.736666+00:00 app[web.1]:     True)

2021-04-06T10:14:41.736667+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/dns/resolver.py", line 1043, in resolve

2021-04-06T10:14:41.736667+00:00 app[web.1]:     timeout = self._compute_timeout(start, lifetime)

2021-04-06T10:14:41.736668+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/dns/resolver.py", line 950, in _compute_timeout

2021-04-06T10:14:41.736668+00:00 app[web.1]:     raise Timeout(timeout=duration)

**2021-04-06T10:14:41.736668+00:00 app[web.1]: dns.exception.Timeout: The DNS operation timed out after 5.107004642486572 seconds**

2021-04-06T10:14:41.736669+00:00 app[web.1]: 

2021-04-06T10:14:41.736669+00:00 app[web.1]: During handling of the above exception, another exception occurred:

2021-04-06T10:14:41.736670+00:00 app[web.1]: 

2021-04-06T10:14:41.736670+00:00 app[web.1]: Traceback (most recent call last):

2021-04-06T10:14:41.736671+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/threading.py", line 916, in _bootstrap_inner

2021-04-06T10:14:41.736671+00:00 app[web.1]:     self.run()

2021-04-06T10:14:41.736672+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/threading.py", line 864, in run

2021-04-06T10:14:41.736672+00:00 app[web.1]:     self._target(*self._args, **self._kwargs)

2021-04-06T10:14:41.736672+00:00 app[web.1]:   File "/app/app/email.py", line 9, in send_async_email

2021-04-06T10:14:41.736673+00:00 app[web.1]:     mail.send(msg)

2021-04-06T10:14:41.736673+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 491, in send

2021-04-06T10:14:41.736674+00:00 app[web.1]:     with self.connect() as connection:

2021-04-06T10:14:41.736674+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 144, in __enter__

2021-04-06T10:14:41.736675+00:00 app[web.1]:     self.host = self.configure_host()

2021-04-06T10:14:41.736675+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 158, in configure_host

2021-04-06T10:14:41.736675+00:00 app[web.1]:     host = smtplib.SMTP(self.mail.server, self.mail.port)

2021-04-06T10:14:41.736676+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 251, in __init__

2021-04-06T10:14:41.736676+00:00 app[web.1]:     (code, msg) = self.connect(host, port)

2021-04-06T10:14:41.736677+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 336, in connect

2021-04-06T10:14:41.736677+00:00 app[web.1]:     self.sock = self._get_socket(host, port, self.timeout)

2021-04-06T10:14:41.736678+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 307, in _get_socket

2021-04-06T10:14:41.736678+00:00 app[web.1]:     self.source_address)

2021-04-06T10:14:41.736679+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/green/socket.py", line 44, in create_connection

2021-04-06T10:14:41.736679+00:00 app[web.1]:     for res in getaddrinfo(host, port, 0, SOCK_STREAM):

2021-04-06T10:14:41.736680+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 517, in getaddrinfo

2021-04-06T10:14:41.736680+00:00 app[web.1]:     qname, addrs = _getaddrinfo_lookup(host, family, flags)

2021-04-06T10:14:41.736681+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 490, in _getaddrinfo_lookup

2021-04-06T10:14:41.736682+00:00 app[web.1]:     raise err

2021-04-06T10:14:41.736682+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup

2021-04-06T10:14:41.736682+00:00 app[web.1]:     answer = resolve(host, qfamily, False, use_network=use_network)

2021-04-06T10:14:41.736683+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 432, in resolve

2021-04-06T10:14:41.736683+00:00 app[web.1]:     raise EAI_EAGAIN_ERROR

2021-04-06T10:14:41.736684+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup

2021-04-06T10:14:41.736684+00:00 app[web.1]:     answer = resolve(host, qfamily, False, use_network=use_network)

2021-04-06T10:14:41.736685+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 432, in resolve

2021-04-06T10:14:41.736685+00:00 app[web.1]:     raise EAI_EAGAIN_ERROR

2021-04-06T10:14:41.736685+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/threading.py", line 916, in _bootstrap_inner

2021-04-06T10:14:41.736686+00:00 app[web.1]:     self.run()

2021-04-06T10:14:41.736686+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/threading.py", line 864, in run

2021-04-06T10:14:41.736687+00:00 app[web.1]:     self._target(*self._args, **self._kwargs)

2021-04-06T10:14:41.736687+00:00 app[web.1]:   File "/app/app/email.py", line 9, in send_async_email

2021-04-06T10:14:41.736688+00:00 app[web.1]:     mail.send(msg)

2021-04-06T10:14:41.736688+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 491, in send

2021-04-06T10:14:41.736688+00:00 app[web.1]:     with self.connect() as connection:

2021-04-06T10:14:41.736689+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 144, in __enter__

2021-04-06T10:14:41.736689+00:00 app[web.1]:     self.host = self.configure_host()

2021-04-06T10:14:41.736689+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 158, in configure_host

2021-04-06T10:14:41.736690+00:00 app[web.1]:     host = smtplib.SMTP(self.mail.server, self.mail.port)

2021-04-06T10:14:41.736697+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 251, in __init__

2021-04-06T10:14:41.736697+00:00 app[web.1]:     (code, msg) = self.connect(host, port)

2021-04-06T10:14:41.736698+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 336, in connect

2021-04-06T10:14:41.736698+00:00 app[web.1]:     self.sock = self._get_socket(host, port, self.timeout)

2021-04-06T10:14:41.736698+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 307, in _get_socket

2021-04-06T10:14:41.736699+00:00 app[web.1]:     self.source_address)

2021-04-06T10:14:41.736699+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/green/socket.py", line 44, in create_connection

2021-04-06T10:14:41.736700+00:00 app[web.1]:     for res in getaddrinfo(host, port, 0, SOCK_STREAM):

2021-04-06T10:14:41.736700+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 517, in getaddrinfo

2021-04-06T10:14:41.736701+00:00 app[web.1]:     qname, addrs = _getaddrinfo_lookup(host, family, flags)

2021-04-06T10:14:41.736701+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 490, in _getaddrinfo_lookup

2021-04-06T10:14:41.736701+00:00 app[web.1]:     raise err

2021-04-06T10:14:41.736720+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup

2021-04-06T10:14:41.736721+00:00 app[web.1]:     answer = resolve(host, qfamily, False, use_network=use_network)

2021-04-06T10:14:41.736722+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 432, in resolve

2021-04-06T10:14:41.736722+00:00 app[web.1]:     raise EAI_EAGAIN_ERROR

2021-04-06T10:14:41.736722+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup

2021-04-06T10:14:41.736723+00:00 app[web.1]:     answer = resolve(host, qfamily, False, use_network=use_network)

2021-04-06T10:14:41.736723+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 432, in resolve

2021-04-06T10:14:41.736723+00:00 app[web.1]:     raise EAI_EAGAIN_ERROR

2021-04-06T10:14:41.736724+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/threading.py", line 916, in _bootstrap_inner

2021-04-06T10:14:41.736724+00:00 app[web.1]:     self.run()

2021-04-06T10:14:41.736725+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/threading.py", line 864, in run

2021-04-06T10:14:41.736725+00:00 app[web.1]:     self._target(*self._args, **self._kwargs)

2021-04-06T10:14:41.736725+00:00 app[web.1]:   File "/app/app/email.py", line 9, in send_async_email

2021-04-06T10:14:41.736726+00:00 app[web.1]:     mail.send(msg)

2021-04-06T10:14:41.736727+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 491, in send

2021-04-06T10:14:41.736727+00:00 app[web.1]:     with self.connect() as connection:

2021-04-06T10:14:41.736728+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 144, in __enter__

2021-04-06T10:14:41.736728+00:00 app[web.1]:     self.host = self.configure_host()

2021-04-06T10:14:41.736728+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py", line 158, in configure_host

2021-04-06T10:14:41.736729+00:00 app[web.1]:     host = smtplib.SMTP(self.mail.server, self.mail.port)

2021-04-06T10:14:41.736729+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 251, in __init__

2021-04-06T10:14:41.736730+00:00 app[web.1]:     (code, msg) = self.connect(host, port)

2021-04-06T10:14:41.736730+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 336, in connect

2021-04-06T10:14:41.736730+00:00 app[web.1]:     self.sock = self._get_socket(host, port, self.timeout)

2021-04-06T10:14:41.736731+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/smtplib.py", line 307, in _get_socket

2021-04-06T10:14:41.736731+00:00 app[web.1]:     self.source_address)

2021-04-06T10:14:41.736732+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/green/socket.py", line 44, in create_connection

2021-04-06T10:14:41.736732+00:00 app[web.1]:     for res in getaddrinfo(host, port, 0, SOCK_STREAM):

2021-04-06T10:14:41.736732+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 517, in getaddrinfo

2021-04-06T10:14:41.736733+00:00 app[web.1]:     qname, addrs = _getaddrinfo_lookup(host, family, flags)

2021-04-06T10:14:41.736733+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 490, in _getaddrinfo_lookup

2021-04-06T10:14:41.736733+00:00 app[web.1]:     raise err

2021-04-06T10:14:41.736734+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup

2021-04-06T10:14:41.736734+00:00 app[web.1]:     answer = resolve(host, qfamily, False, use_network=use_network)

2021-04-06T10:14:41.736734+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 432, in resolve

2021-04-06T10:14:41.736735+00:00 app[web.1]:     raise EAI_EAGAIN_ERROR

2021-04-06T10:14:41.736735+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup

2021-04-06T10:14:41.736735+00:00 app[web.1]:     answer = resolve(host, qfamily, False, use_network=use_network)

2021-04-06T10:14:41.736736+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py", line 432, in resolve

2021-04-06T10:14:41.736736+00:00 app[web.1]:     raise EAI_EAGAIN_ERROR

**2021-04-06T10:14:41.736737+00:00 app[web.1]: socket.gaierror: [Errno -3] Lookup timed out**

我尝试了各种解决方案、更改端口、更改电子邮件提供商(gmail 和虚拟主机提供的电子邮件),但似乎找不到解决方案。

有什么想法吗?

0 个答案:

没有答案
相关问题