代码之家  ›  专栏  ›  技术社区  ›  Stacy Thompson

nginx服务器上带有gunicorn的flask应用程序post时出错

  •  2
  • Stacy Thompson  · 技术社区  · 6 年前

    我对蟒蛇还不熟悉。我托管了flask应用程序,它将在ec2实例上的nginx服务器上接受gunicorn的post请求。

    当我在路线上发帖时,我得到的错误是:

    1578#0: *14 upstream prematurely closed connection while reading response header from upstream, client: myip, server: serverip, request: "POST /train HTTP/1.1", upstream: "http://unix:/home/ec2-user/myproject/myproject.sock:/save_data", host: "serverip"
    

    post请求不是来自同一个域,而是来自其他域。我需要在nginx.conf文件中添加一些内容吗?

    当我使用python app.py命令运行app时,一切正常

    1 回复  |  直到 6 年前
        1
  •  2
  •   Harrison    6 年前

    我能解决这个问题。这与我的nginx配置无关(我最初认为这是原因)。

    这个问题存在于我的gunicorn配置文件中。

    在我的gunicorn配置文件中( /etc/systemd/system/myproject.service ,我在我的 ExecStart 线:

    --timeout 600

    文件现在如下所示:

    [Unit]
    Description=Gunicorn instance to serve myproject
    After=network.target
    
    [Service]
    User=harrison
    Group=www-data
    WorkingDirectory=/home/harrison/myproject
    Environment="PATH=/home/harrison/myproject/myprojectenv/bin"
    ExecStart=/home/harrison/myproject/myprojectenv/bin/gunicorn --workers 3 --timeout 600 --bind unix:myproject.sock -m 007 wsgi:application
    
    [Install]
    WantedBy=multi-user.target
    

    此外,在使用 python app.py 是因为它不是由Gunicorn提供的…它使用烧瓶测试开发服务器。开发服务器的超时时间与Gunicorn不同。默认情况下,我认为Gunicorn超时默认为30秒。就我的申请而言,这太低了。