【问题标题】:Flask Nginx uWSGI 504 Gateway Timeout ErrorFlask Nginx uWSGI 504 网关超时错误
【发布时间】:2019-09-29 13:18:31
【问题描述】:

我正在拼命想弄清楚为什么我无法使用 uWSGI nginx 和 Ubuntu 服务器部署我的烧瓶应用程序。

这是我在 nginx 错误日志中的错误:

2019/05/12 09:00:19 [error] 10154#10154: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 24.27.57.18, server: itinareport.tk, request: "POST /login HTTP/1.1", upstream: "uwsgi://unix:/home/pinchrep2/itinarep/itinarep.sock", host: "www.itinareport.tk", referrer: "http://www.itinareport.tk/login"

在使用烧瓶 uWSGI 和 nginx 完成所有设置后,我可以输入我的域名,然后它会将我带到我的网页(登录页面)。尝试登录时页面暂停一段时间,然后我收到 504 Gateway Time-Out

请告诉我应该怎么做。这是我第一次部署应用程序,我花了大约一周的时间尝试不同的配置。我应该让你知道我的烧瓶应用程序通过 ssh 隧道连接到数据库到另一台服务器。不确定这是否也会导致此问题。如果可能,请提供帮助或为我指明正确的方向。

这是我的服务器块配置文件

server{
    listen 80;                                                                                                                           
    server_name itinareport.tk www.itinareport.tk;                                                                                       

    location / {                                                                                                                         
    include uwsgi_params;                                                                                                            
    uwsgi_pass unix:/home/pinchrep2/itinarep/itinarep.sock;                                                                          
}                                                                                                                                    

这是我的服务文件

[Unit]                                                                                                                                  
Description=uWSGI instance to serve itinarep
After=network.target

[Service]
User=pinchrep2
Group=www-data
WorkingDirectory=/home/pinchrep2/itinarep
Environment="PATH=/home/pinchrep2/itinarep/it_venv/bin"
ExecStart=/home/pinchrep2/itinarep/it_venv/bin/uwsgi --ini itinarep.ini

[Install]
WantedBy=multi-user.target  

这是我的 ini 文件

[uwsgi]
module = wsgi:app

master = true
processes = 5

socket = itinarep.sock
chmod-socket = 660
vacuum = true

die-on-term=true 

【问题讨论】:

  • 你能发布 Python 脚本吗?问题可能就在那里!
  • @gerwin 嘿,谢谢你这么快回来。所以我的主要python文件很大。当我使用 python 运行应用程序时,我可以访问我的服务器指定的公共 ip 和端口,并且能够完美地登录。在运行脚本 uwsgi —socket 0.0.0.0:5000 —protocol=http -w wsgi:app 时,我也收到了同样的成功行为。您想查看 python 文件的特定部分吗?
  • 我认为登录路由可能只是超时,但似乎并非如此。您可以发布将服务器绑定到套接字的部分吗?
  • @gerwin 不用担心。我遵循了这个指南digitalocean.com/community/tutorials/…我不确定哪个部分会绑定端口。我也是一个完全的菜鸟。抱歉,如果这些都没有帮助。
  • 能否获取服务的日志文件?也许那里有错误。您可以使用 journalctl 获取它

标签: python ubuntu nginx flask uwsgi


【解决方案1】:

有时在使用 Keras 等库部署烧瓶应用程序时,他们会在 uWSGI 中遇到线程问题。

您可以更改 myproject.ini 中的一些内容以使其正常工作:

  1. 在 myproject.ini 中添加这些设置
master = false <-------- this
processes = 1 <--------- and this
  1. cheaper = 0 添加到您的myproject.ini
  2. lazy-apps = true 添加到您的myproject.ini

所以现在您的 myproject.ini 文件可能如下所示:

[uwsgi]
module = wsgi:app

master = false <-------- this
processes = 1 <--------- and this
socket = myproject.sock
chmod-socket = 660
vacuum = true
die-on-term = true

cheaper = 0 <----------- also this, if option 1 is not enough or doesn't work

lazy-apps = true <------ in some case, this might help

【讨论】:

    猜你喜欢
    • 2011-10-04
    • 2015-02-09
    • 2011-04-08
    • 2015-12-25
    • 2016-06-19
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多