【发布时间】:2021-03-23 22:02:15
【问题描述】:
我几周前在我的旧电脑上保护了我的 Cherrypy 网络服务。然后我遇到了问题,所以我将我的代码导出到一个新的上。在此之前,一切都很好。现在,当我使用内置 ssl 时,我的网页停止响应,因为在某些请求之后,cherrypy 没有响应(即使在终端中,它也只有在我修改代码时才能再次工作)。如果我使用 pyopenssl,一切都在我的电脑上运行良好。如果我尝试从另一台电脑或智能手机/平板电脑连接,我会收到此错误:
"/usr/local/lib/python3.8/dist-packages/OpenSSL/SSL.py", line 1540, in _raise_ssl_error
raise WantWriteError()
OpenSSL.SSL.WantWriteError
它是在我尝试返回图像之后出现的,甚至像网站图标一样小。 这是我的代码,我遵循了cherrypy文档:
# MAIN
if __name__ == "__main__":
conf = {
'/':{
'request.dispatch':cherrypy.dispatch.MethodDispatcher(),
'tools.staticdir.root': os.path.abspath(os.getcwd()),
'tools.sessions.on':True,
'tools.sessions.secure' : True,
'tools.sessions.httponly' : True,
'tools.secureheaders.on' : True
},
'/favicon.ico':
{
'tools.staticfile.on': True,
'tools.staticfile.filename': os.path.abspath(os.getcwd()) + '/favicon.ico'
},
'/js':{
'tools.staticdir.on': True,
'tools.staticdir.dir':'./js'
},
'/css':{
'tools.staticdir.on': True,
'tools.staticdir.dir':'./css'
},
'/css/Resources':{
'tools.staticdir.on': True,
'tools.staticdir.dir':'./css/Resources'
}
}
porta = 443 #porta usata
ip = get_ip() #funzione che prende l'ip del pc
#inizializzo cherrypy
cherrypy.tree.mount(SleepRepository(), '/', conf)
# if hasattr(app, 'toolboxes'):
# # CherryPy 3.1+
# app.toolboxes['secureheaders'] = secureheaders.newauthtools
cherrypy.config.update({'server.socket_host': ip })
cherrypy.config.update({'server.socket_port': porta})
cherrypy.config.update({'server.max_request_body_size' : 35971520000}) #aumento il massimo in MB che posso ricevere
cherrypy.server.ssl_module = 'pyopenssl'
cherrypy.server.ssl_certificate = "cert.pem"
cherrypy.server.ssl_private_key = "privkey.pem"
cherrypy.engine.start()
cherrypy.engine.block()
关于错误,我发现一个线程建议修改库的一行,但它的工作方式不一样......有人有想法吗?
【问题讨论】:
标签: python python-3.x ssl cherrypy pyopenssl