小编Arl*_*kin的帖子

如何在 python Flask 服务器中处理“413:请求实体太大”

我正在使用Flask-uploads将文件上传到我的 Flask 服务器。允许的最大大小是通过使用设置的flaskext.uploads.patch_request_class(app, 16 * 1024 * 1024)

我的客户端应用程序(一个单元测试)使用请求来发布一个很大的文件。

我可以看到我的服务器返回一个带有 status 的 HTTP 响应413: Request Entity Too Large。但是客户端在请求代码中引发异常

ConnectionError: HTTPConnectionPool(host='api.example.se', port=80): Max retries exceeded with url: /images (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)
Run Code Online (Sandbox Code Playgroud)

我的猜测是服务器断开接收套接字并将响应发送回客户端。但是当客户端收到损坏的发送套接字时,它会引发异常并跳过响应。

问题:

  • 我对 Flask 上传和请求的猜测是否正确?
  • Flask-Uploads 和 request 处理 413 错误是否正确?
  • 当帖子很大时,我应该期望我的客户端代码返回一些 html 吗?

更新

这是一个重现我的问题的简单示例。

服务器.py

from flask import Flask, request
app = Flask(__name__)
app.config['MAX_CONTENT_LENGTH'] = 1024

@app.route('/post', methods=('POST',))
def view_post():
    return request.data

app.run(debug=True) …
Run Code Online (Sandbox Code Playgroud)

python sockets flask python-requests flask-extensions

6
推荐指数
2
解决办法
2万
查看次数

代码完成2ed,组成和委托

在这个论坛上看了几个星期后,我觉得是时候做我的第一篇文章.

我目前正在重读Code Complete.我认为这是自上次以来的15年,我发现我仍然无法编写代码;-)

无论如何,在Code Complete中的第138页,你会发现这个编码恐怖的例子.(我删除了一些代码)

class Emplyee {
public: 
 FullName GetName() const;
 Address GetAddress() const;
 PhoneNumber GetWorkPhone() const;
 ...

 bool IsZipCodeValid( Address address);
 ...

private: 
   ...
}
Run Code Online (Sandbox Code Playgroud)

史蒂夫认为不好的是功能松散相关.或者他写道:"检查邮政编码,电话号码或工作分类的员工和例程之间没有逻辑联系"

好的,我完全赞同他.也许类似下面的例子更好.

class ZipCode
{
public:
 bool IsValid() const;
    ...
}

class Address {
public:
   ZipCode GetZipCode() const;
   ...
}

class Employee {
public: 
 Address GetAddress() const;
    ...
}
Run Code Online (Sandbox Code Playgroud)

检查拉链是否有效时,您需要执行类似的操作.

employee.GetAddress().GetZipCode().IsValid();
Run Code Online (Sandbox Code Playgroud)

对于得墨忒耳法而言,这并不好.

因此,如果你想删除三个点中的两个,你需要使用委托和一些像这样的包装函数.

class ZipCode
{
public:
 bool IsValid();
}

class Address {
public:
   ZipCode GetZipCode() const;
   bool IsZipCodeValid() {return GetZipCode()->IsValid()); …
Run Code Online (Sandbox Code Playgroud)

c++ delegates composition code-complete

5
推荐指数
2
解决办法
592
查看次数