我有一个设备发送POST到我的服务器。在python中,我使用以下任一方法获取发布的数据:
request.data
request.get_data
request.get_json
但是我可以获得这些简单数据的时间各不相同。我用这样的东西测试:
start = time.time()
resp = request.data
return str(time.time() - start)
从一些终端节点,我看到次1ms的时间,有些,我看到超过100ms,对于相同数量的数据。既然已经创建了请求对象,并且我假设已经收到了数据,那么这种速度变化的原因是什么呢?
我假设数据已经收到
不要假设:)
Flask使用来自Werkzeug which calls get_data
的请求类。 get_data
要么已经缓存了数据,要么reads the stream。
文档字符串中甚至还有一个警告:
通常,在不检查内容长度的情况下调用此方法通常是个坏主意,因为客户端可能会发送数十兆字节或更多,从而导致服务器上出现内存问题。
如果你想在一个缓慢的请求上安全地阻止你的服务器,你应该在它前面放一些反向代理(nginx?),它可以更有效地处理输入,并在准备好时将完整的请求移交给服务器。