Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何限制tornado websocket邮件大小_Python_Websocket_Tornado - Fatal编程技术网

Python 如何限制tornado websocket邮件大小

Python 如何限制tornado websocket邮件大小,python,websocket,tornado,Python,Websocket,Tornado,我在tornado中编写了一个websocket服务器,当收到消息时,会调用消息上的on方法。问题是,defualt不限制消息的大小,换句话说,通过从客户端向websocket发送一个巨大的数据(消息),项目会被打开,从而导致服务器端内存满。必须有一个选项来限制传入消息的大小,是吗?如果没有,我必须做些什么来避免这种错误呢?这是我的代码,用于获取长度小于128字节的消息,但它似乎不起作用。 class ClientWebSocketConnectionHandler(tornado.websoc

我在tornado中编写了一个websocket服务器,当收到消息时,会调用消息上的
on
方法。问题是,defualt不限制消息的大小,换句话说,通过从客户端向websocket发送一个巨大的数据(消息),项目会被打开,从而导致服务器端内存满。必须有一个选项来限制传入消息的大小,是吗?如果没有,我必须做些什么来避免这种错误呢?

这是我的代码,用于获取长度小于128字节的消息,但它似乎不起作用。

class ClientWebSocketConnectionHandler(tornado.websocket.WebSocketHandler):

    def open(self):
        print "Connection is opened"

    def on_message(self, message):
        print message

    def on_close(self):
        print "closed"

handlers = [(r'/', ClientWebSocketConnectionHandler)]
tornado.web.Application.__init__(self, handlers)
TheShieldsWebSocket = MainApplication()
server =tornado.httpserver.HTTPServer(TheShieldsWebSocket,max_body_size=128)
server.listen(8080)

请查看此处的文档:

要对链接进行解释以备将来使用,请执行以下操作:

设置最大实体大小(最大实体大小)[来源]

设置单个请求的正文大小限制

重写HTTP1ConnectionParameters中的值


由于版本4.5,如果Tornado在单个websocket框架(消息)中接收到超过10个MiB的数据,它将自动关闭连接。因此,您不必担心有人在一条消息中发送大量数据。你可以在地图上看到这一点。第二段最后一段的文档中也提到了这一点

如果要更改默认帧限制,可以向
应用程序
传递一个名为
websocket\u max\u message\u size
的参数,该参数的大小以字节为单位

app = tornado.web.Application(
      # your handlers etc,
      websocket_max_message_size=128
)

我刚刚编辑了我的帖子。能否请您输入一个接收有限消息长度的websocket服务器代码示例?