Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x nginx/gunicorn/flask服务器仅在使用flask邮件时超时_Python 3.x_Nginx_Flask_Gunicorn_Flask Mail - Fatal编程技术网

Python 3.x nginx/gunicorn/flask服务器仅在使用flask邮件时超时

Python 3.x nginx/gunicorn/flask服务器仅在使用flask邮件时超时,python-3.x,nginx,flask,gunicorn,flask-mail,Python 3.x,Nginx,Flask,Gunicorn,Flask Mail,我在python3上使用flask创建了一个应用程序,并在Ubuntu 18.04上使用nginx和gunicorn进行了部署。在我使用flask mail设置邮件支持之前,一切正常(本地和服务器上)。在本地flask开发服务器上,一切正常,但在Ubuntu服务器上,我总是收到502坏网关错误。这只是当我尝试发送邮件时。在“正常”路线上,一切正常。邮件数据100%正确 我正在使用gunicorn作为我的wsgi服务器。它是由监督人维持生命的。我创建了一个只发送“hello world”电子邮件的

我在python3上使用flask创建了一个应用程序,并在Ubuntu 18.04上使用nginx和gunicorn进行了部署。在我使用flask mail设置邮件支持之前,一切正常(本地和服务器上)。在本地flask开发服务器上,一切正常,但在Ubuntu服务器上,我总是收到502坏网关错误。这只是当我尝试发送邮件时。在“正常”路线上,一切正常。邮件数据100%正确

我正在使用gunicorn作为我的wsgi服务器。它是由监督人维持生命的。我创建了一个只发送“hello world”电子邮件的测试路由。我查看了每个日志文件,但没有输出。我还尝试在端口5000上使用flask development server进行测试,结果出现以下错误:

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”)。当我调用settings.mydomain.com/test/时,会出现超时错误


我真的需要帮助找出我的配置出了什么问题。我的nginx配置是一些标准的反向代理,就像在互联网上无数次找到的一样。Gunicorn正在运行3个worker。

您应该尝试“取消堆栈”:调用发送消息的python脚本,对其计时,以查看需要多长时间。如果时间很长,问题是perharps而不是python。尝试使用“邮件”命令发送消息,并对其计时。等等查找“发送电子邮件”的哪一部分可能导致超时。嗯,我现在无法将其取消堆叠。以上我当前的测试代码是我能想象到的最简单的方式。您能否更明确地说明“尝试使用‘mail’命令”的含义?您的程序在连接到邮件服务器时超时。邮件服务器正在运行吗?您是如何配置它的?这不是您的Flask或nginx确认。是的,邮件服务器正在运行。我没有自己配置它,因为它是由我们以前的webhoster(df.eu)托管的。我在不同的地方尝试了不同的邮件服务器。它们都在我的本地机器上工作,但在我们的托管服务器上不工作。邮件服务器没有问题。上面发布的错误表明flask mail使用的smtplib超时。@DukeSilver Yes。对不起,我完全忘了在这里发布我的解决方案。只是我的主机提供商关闭了传出SMTP端口。我不得不要求他们向公众开放。我可以在我的云主机网络内部打开端口,但必须请求许可才能向公众开放。你应该尝试“取消堆栈”:调用一个发送消息的python脚本,计时,看看需要多长时间。如果时间很长,问题是perharps而不是python。尝试使用“邮件”命令发送消息,并对其计时。等等查找“发送电子邮件”的哪一部分可能导致超时。嗯,我现在无法将其取消堆叠。以上我当前的测试代码是我能想象到的最简单的方式。您能否更明确地说明“尝试使用‘mail’命令”的含义?您的程序在连接到邮件服务器时超时。邮件服务器正在运行吗?您是如何配置它的?这不是您的Flask或nginx确认。是的,邮件服务器正在运行。我没有自己配置它,因为它是由我们以前的webhoster(df.eu)托管的。我在不同的地方尝试了不同的邮件服务器。它们都在我的本地机器上工作,但在我们的托管服务器上不工作。邮件服务器没有问题。上面发布的错误表明flask mail使用的smtplib超时。@DukeSilver Yes。对不起,我完全忘了在这里发布我的解决方案。只是我的主机提供商关闭了传出SMTP端口。我不得不要求他们向公众开放。我可以在我的云主机网络内部打开端口,但必须获得向公众开放的许可。