首页 > 解决方案 > 增加 Tornado 中 BaseIOStream 的 max_buffer_size 限制

问题描述

Tornado websocket 服务器用于与可能发送大量有效负载的客户端进行双向通信。我已经使用以下方法增加了套接字消息的大小:

tornado.web.Application(tuples, websocket_max_message_size = 256 * 1024 * 1024), 

根据:答案。但是,如果消息超过 100MiB(超出读取缓冲区大小),则会出现异常。

尝试过:
我相信我已经在BaseIoStream中追踪到max_buffer_size设置为 100MiB 值的异常。我怎样才能增加缓冲区大小(或其他任何东西,所以我可以接收 > 100MiB 的消息)?

标签: pythonwebsockettornadolarge-files

解决方案


您可以WebSocketHandler像这样从子类中增加 IOStream 的缓冲区限制:

class YourWebSocketHandler(websocket.WebSocketHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.request.connection.stream.max_buffer_size = 256 * 1024 * 1024

这也适用于RequestHandler子类。


推荐阅读