首页 > 解决方案 > 在 Linux 服务器上使用 Python Flask 的 Nginx 400 错误请求

问题描述


我有一个 python 烧瓶程序,它完美地在我的本地 Windows 电脑上运行。当我向邮递员发送请求时,它工作正常。然后我将它发布在我的 linux 服务器上。我的应用程序服务“systemctl status service”输出如下所示:在此处输入图像描述

然后我改变了我的代码。我现在看起来很好: 在此处输入图像描述

但是当我从邮递员发送请求时,它的响应是“400 Bad Request”

我的代码相关部分是:

def read_file(unknown_count, file_data):
    file = pd.read_csv(file_data, sep=';', header=None)
    df = pd.DataFrame(file)
    solve(df, unknown_count)

@app.route("/find", methods = ['POST'])
def findroots():
    unknowns = int(request.form['unknowns'])
    file_data = request.files['file']
    read_file(unknowns, file_data)
    return send_file('roots.csv', mimetype='text/csv', as_attachment=True)

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True)

我从请求表单数据中获取一个 csv 文件和一个变量值,然后在我的 read_file() 函数中将 csv 文件转换为数据帧。然后我正在计算一些东西,然后将结果写入 csv 文件,并将其作为响应发送。

def solve(df, unknown_count):
    //here is my some codes
    to_csv(roots)

def to_csv(roots):
    root_vals = []
    for i, root_cluster in enumerate(roots):
        //here is some codes which is doesn't matter
        root_vals.append(root_val)
    
    dfr = pd.DataFrame(root_vals)
    dfr.to_csv('roots.csv', index = False, header=None)

正如我所说,它在我的本地计算机上工作正常。但是当我试图向我在 linux 服务器上运行的应用程序发送请求时。它返回 400 错误请求。也许原因仍然是read_csv。但我试图处理 7 个小时。最后我决定在那里问它。我删除了所有文件并再次部署。

这是我的 nginx 配置: 在此处输入图像描述

这是我的服务:

但还是一样。有谁能够帮我?

标签: pythonlinuxpandasnginxflask

解决方案


您的 Nginx 配置看起来正确。

您可以使用sudo nginx -T打印当前加载的配置。确保在进行更改后重新加载配置sudo nginx -s reload

您可以简单地检查您的服务器块是否会使用此配置 snip-it 到达:

server {
  listen 8081;
  server_name 1.2.3.4;

  location / {
    return 200 "Hello from the other side... \n";
  }
}

这应该打印出来hello from ...,因为

curl -v http://1.2.3.4:8081


推荐阅读