Я создал приложение с использованием flask на python3 и развернул его с помощью nginx и gunicorn на Ubuntu 18.04.Все работало нормально (локально и на сервере), пока я не настроил поддержку почты с помощью flask-mail.На локальном сервере разработки фляг все работало нормально, но на сервере Ubuntu я всегда получаю ошибку 502 Bad Gateway.Это только когда я пытаюсь отправить почту.На "нормальных" маршрутах все отлично работает.Данные почты верны на 100%.
Я использую gunicorn в качестве сервера wsgi.Он поддерживается живым благодаря наблюдению.Я создал тестовый маршрут, только отправляя электронное письмо с приветом.Я посмотрел в каждом файле журнала, но нет вывода.Я также пытался использовать сервер разработки фляг для тестирования порта 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 ""
Я также добавил SERVER_NAME фляги ("mydomain.com").Когда я звоню на settings.mydomain.com/test/, я получаю сообщение об ошибке тайм-аута.
Мне действительно нужна помощь, чтобы выяснить, что не так с моей конфигурацией.Моя конфигурация nginx - это какой-то стандартный обратный прокси-сервер, подобный тому, который тысячу раз встречался в Интернете и указывающий на http://localhost:8000. В Gunicorn работают 3 рабочих.