Время работы сервера nginx/gunicorn/flask истекло только при использовании mail-mail

Я создал приложение с использованием 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 рабочих.

0 ответов

Другие вопросы по тегам