本文介绍了所有请求的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
发布评论