如何在Jupyter中增大HTTP header大小解决3D可视化请求报错问题
Jupyter大请求Header大小限制修复方案
配置不生效原因
max_header_size是Tornado HTTPServer类初始化时需要传入的参数,不属于Tornado Web应用的运行时配置,因此写在c.ServerApp.tornado_settings中不会被Jupyter透传至服务端构造逻辑,无法生效。
无需修改源码的永久解决方案
直接在你的jupyter_server_config.py中添加以下代码即可:
from tornado.httpserver import HTTPServer # 保留原始HTTPServer构造方法 original_http_init = HTTPServer.__init__ # 自定义构造方法,注入header和buffer大小参数 def patched_http_init(self, *args, **kwargs): kwargs.update({ "max_header_size": 500 * 1024 * 1024, # 500MB,可根据需求调整 "max_buffer_size": 1024 * 1024 * 1024 # 1GB,可根据需求调整 }) original_http_init(self, *args, **kwargs) # 替换原构造方法 HTTPServer.__init__ = patched_http_init
修改完成后重启Jupyter Server即可生效,后续所有启动的实例都会使用你设置的大小限制。
临时生效方案
如果仅需要单次测试使用,可以直接用以下命令启动Jupyter:
python -c "from tornado.httpserver import HTTPServer; ori = HTTPServer.__init__; HTTPServer.__init__ = lambda s,*a,**k: ori(s,*a,**k,max_header_size=524288000,max_buffer_size=1073741824); from jupyter_server.serverapp import main; main()"
注意:过高的header大小会提升服务器遭受慢速HTTP攻击的风险,建议仅在内网可信环境下使用该配置,参数值设置为最大可视化数据体积的1.2倍即可,无需冗余设置。
内容的提问来源于stack exchange,提问作者marscher
相关产品推荐
相关产品推荐

