PythonCherrypy和带有ssl的瓶子-服务器无法保存大于102199字节的文件
下一个问题仅在启用SSL时发生 我正在使用https运行一个瓶子版本为0.12.6和cherrypy版本为3.2.2的服务器。 客户端代码向服务器发送一个文件,服务器保存该文件。 当我发送一个大小低于102199字节的文件时,它被成功接收并保存。但是,当我发送一个大小大于或等于102199的文件时,会出现以下异常: 服务器代码:PythonCherrypy和带有ssl的瓶子-服务器无法保存大于102199字节的文件,python,ssl,cherrypy,bottle,Python,Ssl,Cherrypy,Bottle,下一个问题仅在启用SSL时发生 我正在使用https运行一个瓶子版本为0.12.6和cherrypy版本为3.2.2的服务器。 客户端代码向服务器发送一个文件,服务器保存该文件。 当我发送一个大小低于102199字节的文件时,它被成功接收并保存。但是,当我发送一个大小大于或等于102199的文件时,会出现以下异常: 服务器代码: from bottle import request, response,static_file, run,server_names 从OpenSSL导入加密,SS
from bottle import request, response,static_file, run,server_names
从OpenSSL导入加密,SSL
从瓶子导入瓶子、运行、请求、服务器名称、服务器适配器
app = Bottle()
app.mount('/test' , app)
class MySSLCherryPy(ServerAdapter):
def run(self, handler):
from cherrypy import wsgiserver
server = wsgiserver.CherryPyWSGIServer((self.host, self.port), handler)
server.ssl_certificate = "./cert"
server.ssl_private_key = "./key"
try:
server.start()
finally:
server.stop()
@app.post('/upload')
def received_file():
file = request.files.file
# file.save("./newfile")
file_path="./newfile"
with open(file_path, 'w') as open_file:
open_file.write(file.read())
if __name__=='__main__':
server_names['mysslcherrypy'] = MySSLCherryPy
run(app, host='0.0.0.0', port=4430, server='mysslcherrypy')
exit(0)
为什么服务器无法获取超过给定限制的文件?我是否需要更改限制?
(我试图在函数received_file处设置常量MEMFILE_MAX,但没有帮助)
如果服务器是http而不是https,问题就会消失
纯文本形式的异常(如果无法查看图像):
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.6/site packages/瓶子.py”,第861行,在U形手柄中
返回路线。呼叫(**args)
包装器中的文件“/usr/lib/python2.6/site packages/battle.py”,第1727行
rv=回拨(*a,**ka)
文件“testser”,第28行,在收到的\u文件中
file=request.files.file
文件“/usr/lib/python2.6/site packages/battle.py”,第165行,在get
如果密钥不在存储器中:存储器[key]=self.getter(obj)
文件“/usr/lib/python2.6/site-packages/battle.py”,第1106行,在文件中
对于名称,self.POST.allitems()中的项:
文件“/usr/lib/python2.6/site packages/battle.py”,第165行,在get
如果密钥不在存储器中:存储器[key]=self.getter(obj)
文件“/usr/lib/python2.6/site packages/battle.py”,第1222行,在POST中
args=dict(fp=self.body,environ=safe\u env,keep\u blank\u values=True)
正文第1193行中的文件“/usr/lib/python2.6/site packages/瓶子.py”
self.\u body.seek(0)
文件“/usr/lib/python2.6/site packages/battle.py”,第165行,在get
如果密钥不在存储器中:存储器[key]=self.getter(obj)
文件“/usr/lib/python2.6/site-packages/瓶子.py”,第1162行,正文
对于body_iter中的零件(读取函数、self.MEMFILE_MAX):
文件“/usr/lib/python2.6/site packages/瓶子.py”,第1125行,正文
部分=读取(最小值(最大读取,最小值))
文件“/usr/lib/python2.6/site packages/cherrypy/wsgiserver/wsgiserver2.py”,第329行,已读
数据=self.rfile.read(大小)
文件“/usr/lib/python2.6/site packages/cherrypy/wsgiserver/wsgiserver2.py”,第1052行,已读
断言
bottle.BaseRequest.MEMFILE_MAX=30000000000