Ubuntu出错/网页.py使用cherryPy时线程出现异常

2024-04-29 06:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正在开发的webApp,我注意到每隔一段时间我会看到一个错误“Exception in thread CP Server thread-*”,其中*=random thread号码。这个错误偶尔会发生,最终会锁定web服务器,使其无法响应请求。在

我使用CherryPy支持SSL,用默认的“helloworld”webPy应用程序重现了相同的问题。在

import web
from web.wsgiserver import CherryPyWSGIServer

# GLOBALS
CherryPyWSGIServer.ssl_certificate = "/.ssl/fpi.crt"
CherryPyWSGIServer.ssl_private_key = "/.ssl/server.key"

urls = (
    '/(.*)', 'Hello',
    )

app = web.application(urls, globals())

class Hello:
    def GET(self, name):
        return 'Hello World'

if __name__ == "__main__":
    app.run()

错误是:

^{pr2}$

环境: Ubuntu 18.04.1 LTS Python 2.7.15rc1 网页.py:0.39

有没有人见过这样的问题,或者知道是什么原因造成的。阅读时webpy.org网站. 这个版本应该是36.0版本,但它应该是一个不错的版本。我曾想过要升级到0.40,但由于还在开发阶段,所以犹豫不决


Tags: keynameimport版本webappsslhello
1条回答
网友
1楼 · 发布于 2024-04-29 06:22:05

这可能不是一个适当的修复,但我做了下面的黑客和问题不再显示我。我仍在寻找一个更好的解决方案,也许会把CherryPy完全扔掉,但在此之前:

=====>在def _safe_callssl_pyopenssl.py:替换

raise socket.error(errnum)

^{pr2}$

以及raise socket.error(-1)raise wsgiserver.FatalSSLAlert(*e.args)的类似补丁

====>;在def sendallwsgiserver2.py:插入2行,如下所示:

bytes_sent = self.send(data)
### insert the below two lines
if not bytes_sent: # hack b/c self.send has unhandled exceptions
    break
### end insert
data = data[bytes_sent:]

有兴趣听到任何问题使用上述

相关问题 更多 >