我已经在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名工人。