仅当使用烧瓶邮件

时间:2019-02-14 09:16:35

标签: python-3.x nginx flask gunicorn flask-mail

我已经在python3上使用flask创建了一个应用,并在Ubuntu 18.04上使用nginx和gunicorn部署了它。一切正常(在本地和服务器上),直到我使用flask-mail设置了邮件支持。在本地flask开发服务器上,一切正常,但是在Ubuntu服务器上,我总是收到502 Bad Gateway错误。仅当我尝试发送邮件时。在“正常”路线上,一切正常。邮件数据是100%正确的。

我正在使用gunicorn作为wsgi服务器。它由主管保持生命。我创建了一个测试路由,仅发送“ hello world”电子邮件。我查看了每个日志文件,但是没有输出。我还尝试使用flask开发服务器在端口5000上进行测试,这给了我以下错误:

504 - Gateway Time-out
[2019-02-12 13:53:37,083] ERROR in app: Exception on /test/ [GET]
Traceback (most recent call last):
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/ubuntu/layoutboxx/application/settings/routes.py", line 655, in change
     change_email_mail("info@fabio-oelschlaeger.de", "abc")
  File "/home/ubuntu/layoutboxx/application/mail.py", line 70, in change_email_mail
    mail.send(msg)
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask_mail.py", line 491, in send
    with self.connect() as connection:
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask_mail.py", line 144, in __enter__
    self.host = self.configure_host()
  File "/home/ubuntu/layoutboxx/.venv/lib/python3.6/site-packages/flask_mail.py", line 156, in configure_host
    host = smtplib.SMTP_SSL(self.mail.server, self.mail.port)
  File "/usr/lib/python3.6/smtplib.py", line 1031, in __init__
    source_address)
  File "/usr/lib/python3.6/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.6/smtplib.py", line 336, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python3.6/smtplib.py", line 1037, in _get_socket
    self.source_address)
  File "/usr/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/usr/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out
127.0.0.1 - - [12/Feb/2019 13:53:37] "GET /test/ HTTP/1.0" 500 -

我的邮件发送功能:

def change_email(email):
    msg = Message(
        "Confirm email change",
        recipients=[email]
    )
    msg.body = render_template("mails/change_email.txt")
    msg.html = render_template("mails/change_email.html")
    mail.send(msg)

测试蓝图:

settings = Blueprint("settings",
    __name__,
    static_folder="static",
    template_folder="templates",
    subdomain="settings"
)

@settings.route("/test/")
def change():
    change_email("my@mail.com")
    return ""

我还添加了flask(“ mydomain.com”)的SERVER_NAME。当我致电settings.mydomain.com/test/时,我收到了超时错误。

我真的需要帮助找出我的配置出了什么问题。我的nginx配置是一些标准的反向代理,例如在Internet上发现了指向http://localhost:8000的数千次。 Gunicorn正在运行3名工人。

0 个答案:

没有答案