运行玻璃框架

时间:2016-08-22 07:43:07

标签: python

我是Glass框架的新手我已经在我的ubuntu系统中安装了玻璃服务器,当我运行示例测试应用程序时返回_BaseServer__is_shut_down 错误我怎么能解决这个问题,我已经尝试了不同的端口号,但同样的问题。

test.py

#!/usr/bin/env python
from glass.HTTPServer import test
try:
  print "Use Control-C to exit.  In Windows, use Control-Break."
  test()
except KeyboardInterrupt:
  pass

当我运行此代码时出现错误,如

Serving HTTP on 0.0.0.0 port 8080 ...
Traceback (most recent call last):
File "HTTPServer.py", line 305, in <module>
test()
File "HTTPServer.py", line 300, in test
httpd.serve_forever()
File "/usr/lib/python2.7/SocketServer.py", line 223, in serve_forever
self.__is_shut_down.clear()
File "HTTPServer.py", line 265, in __getattr__
raise AttributeError(attr)
AttributeError: _BaseServer__is_shut_down

2 个答案:

答案 0 :(得分:0)

我无法解决这个问题,但框架似乎很老了。我可以将您重新发送到最简单的HTTP服务器,也很容易:

Python 3(首选)使用http.server

import http.server
import socketserver

PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(('', PORT), Handler)
print('serving at port', PORT)
httpd.serve_forever()

Python 2使用SimpleHTTPServer

import SimpleHTTPServer
import SocketServer

PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(('', PORT), Handler)
print 'serving at port', PORT
httpd.serve_forever()

答案 1 :(得分:0)

在框架代码中做了一些研究后,我发现了下一个:

包中的HTTPServer是一个自定义的,内置__getattr__内置集,当一个属性不是&#34; is_secure&#34;被访问。

# Code from HTTPServer.py
def __getattr__(self, attr):
    if attr == "is_secure":
        return getattr(self.servertype.create_socket, "is_secure", False)
    raise AttributeError(attr)  # This is the buggy statement

因此,在普通的情况下,访问的任何HTTPServer属性(&#34; is_secure&#34;除外)都将无法解决异常。

我猜你有三个选择:

  1. 修复测试功能以使其正常工作
  2. 继续使用测试功能并尝试使该框架正常工作
  3. 按照Tiger-222解决方案并坚持 SimpleHTTPServer