所有请求的Python Tornado max_Buffer_Size [英] Python Tornado max_buffer_size across all requests

查看:0
本文介绍了所有请求的Python Tornado max_Buffer_Size的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我可以在Tornado中设置max_buffer_size来限制可以上载到服务器的数据量。但我尝试做的是限制对我的Tornado服务器的所有请求的数据总量。

例如,我有500个同时发送到Tornado服务器的请求。每个请求都在上传1MB的数据。我希望我的Tornado服务器在所有请求都收到150MB数据时拒绝连接。因此,前150个请求将被接收,但接下来的350个请求将在将任何数据缓冲到内存之前被Tornado拒绝。

是否可以在Tornado中执行此操作?

推荐答案

当前无法设置这样的全局限制(但添加它可能是一件好事)。

您目前所能做的最好的事情就是确保每个连接使用的内存都很低:设置一个较低的默认值max_body_size,对于需要接收更多数据的RequestHandler,使用@stream_request_body和inprepare()Callself.request.connection.set_max_body_size(large_value)。使用@stream_request_body修饰符,每个连接的内存使用将受到chunk_size参数的限制,而不是一次读取整个正文。然后,在data_recieved方法中,您可以await从全局信号量进行分配,以控制超出每个连接区块大小的内存使用。

这篇关于所有请求的Python Tornado max_Buffer_Size的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆