解决AppRTC服务器中的一个错误

AppRTC搭建房间服务器,使用的是google自家的google_appengine,就是实现https web服务器,是基于python开发的。把这个运行起来,在浏览器上访问,有时候不小心,把https错敲成http,结果访问https的端口,就把房间服务器给搞崩了。错误如下:

Exception in thread WSGI select:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/root/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 166, in _loop_forever
    self._select()
  File "/root/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 188, in _select
    fd_to_callback[fd]()
  File "/root/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 1902, in tick
    s, ssl_env = self.ssl_adapter.wrap(s)
  File "/root/google_appengine/lib/cherrypy/cherrypy/wsgiserver/ssl_builtin.py", line 52, in wrap
    keyfile=self.private_key, ssl_version=ssl.PROTOCOL_TLS)
  File "/usr/lib/python2.7/ssl.py", line 931, in wrap_socket
    ciphers=ciphers)
  File "/usr/lib/python2.7/ssl.py", line 599, in __init__
    self.do_handshake()
  File "/usr/lib/python2.7/ssl.py", line 828, in do_handshake
    self._sslobj.do_handshake()
SSLError: [SSL: HTTP_REQUEST] http request (_ssl.c:727)

这个错误出现后,房间服务器就不能访问了,只有重新启动它。追踪到这个问题的的源头是:/YourPath/google_appengine/lib/cherrypy/cherrypy/wsgiserver/ssl_builtin.py,它在做异常处理的时候,有一句:

if e.args[1].endswith('http request'):

但这个异常信息字符串并不是以'http request'结尾的,结果就走不进去,继续把异常往外抛。

把这句改为:

if "http request" in e.args[1]:

问题解决,再也不会因为这个问题把房间服务器搞挂掉了。

如果在浏览器里尝试以http地址去访问的ssl端口,出来下面的提示信息:

The client sent a plain HTTP request, but this server only speaks HTTPS on this port.
发布了282 篇原创文章 · 获赞 140 · 访问量 117万+

猜你喜欢

转载自blog.csdn.net/qiuchangyong/article/details/104976480