6

所以我目前正在为我的网络运行一个基本的小网站。但是,我遇到了一些问题。当我在运行服务器的计算机上运行服务器时,我可以非常快速地访问这些页面。但是,当我尝试在网络上的另一台计算机上访问同一页面时,它的加载速度非常慢。是不是因为我使用的是开发者。服务器而不是像 Paste 或 Apache 这样的东西?(还要注意,当我查看服务器计算机时,请求日志在我在另一台计算机上的浏览器上请求后大约 5-6 秒出现)

我的代码如下:

正在访问的页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type"
 content="text/html; charset=ISO-8859-1">
  <title>index</title>
  <link type="text/css"
 href="cssfiles/mainpagecss.css"
 rel="stylesheet">
</head>
<body>
<table
 style="width: 100%; text-align: left; margin-left: auto; margin-right: auto;"
 border="0" cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td>
      <h1><span class="headertext">
      <center>Network
Website</center>
      </span></h1>
      </td>
    </tr>
  </tbody>
</table>
%if name!='none':
    <p align="right">signed in as: {{name}}</p>
%else:
    pass
%end
<br>
<table style="text-align: left; width: 100%;" border="0" cellpadding="2"
 cellspacing="2">
  <tbody>
    <tr>
      <td>
      <table style="text-align: left; width: 100%;" border="0"
 cellpadding="2" cellspacing="2">
        <tbody>
          <tr>
            <td style="width: 15%; vertical-align: top;">
            <table style="text-align: left; width: 100%;" border="1"
 cellpadding="2" cellspacing="2">
              <tbody>
                <tr>
                  <td>Home<br>
                  <span class="important">Teamspeak Download</span><br>
                  <span class="important">Teamspeak Information</span></td>
                </tr>
              </tbody>
            </table>
            </td>
            <td style="vertical-align: top;">
            <table style="text-align: left; width: 100%;" border="1"
 cellpadding="2" cellspacing="2">
              <tbody>
                <tr>
                  <td>
                  <h1><span style="font-weight: bold;">Network Website</span></h1>
To find all of the needed information relating to the network's social
capabilities, please refer to the links in the side bar.</td>
                </tr>
              </tbody>
            </table>
            </td>
          </tr>
        </tbody>
      </table>
      </td>
    </tr>
  </tbody>
</table>
</body>
</html>

CSS:

  .headertext { color: rgb(51, 51, 51);
    }

  .bodytext {  }

  .important { font-weight: bold;
    }

服务器:

from Bottle import route,run,template,request,static_file



@route('/')
def home():
    return template('Templates/',name=request.environ.get('REMOTE_ADDR'))

run(host='Work-PC',port=9999,debug=True)
4

3 回答 3

9

我知道我迟到了,但我遇到了同样的问题。默认的瓶服务器(来自 wsgiref.simple_server 的 WSGIRef)对每个 GET、POST 等进行反向 DNS 查找,因此它可以使用连接主机名而不是其在 Web 日志中的 IP 地址。即使您有一个快速的 DNS 响应程序,这也会不必要地减慢速度。:(

只需对 bottle.py 进行一点修改,您就可以重载执行 rDNS 的底层方法BaseHTTPRequestHandler.address_string(),如下所示:

瓶子.py

 class WSGIRefServer(ServerAdapter):
     def run(self, handler): # pragma: no cover
         from wsgiref.simple_server import make_server, WSGIRequestHandler
+        self.fast = True
+        self.quiet = False
+        if self.fast and self.quiet:  # disable logging and rDNS
+            class FastAndQuietHandler(WSGIRequestHandler):
+                def address_string(self): return self.client_address[0]
+                def log_request(*args, **kw): pass
+            self.options['handler_class'] = FastAndQuietHandler
+        elif self.fast:  # disable Reverse DNS Lookups -> faster service
+            class FastHandler(WSGIRequestHandler):
+                def address_string(self): return self.client_address[0]
+            self.options['handler_class'] = FastHandler
-        if self.quiet:
+        elif self.quiet:  # disable action entries to web-log
             class QuietHandler(WSGIRequestHandler):
                 def log_request(*args, **kw): pass
             self.options['handler_class'] = QuietHandler
         srv = make_server(self.host, self.port, handler, **self.options)
         srv.serve_forever()

我不喜欢修补源代码,但在上游接受此修补程序之前,如果您确定使用默认服务器,这会很好。

信用:见 - https://stackoverflow.com/a/6761844/538418

高温高压

于 2013-01-23T00:44:54.150 回答
8

尝试从同一网络上的另一台 PC 测试 Bottle 应用程序时,我遇到了同样的延迟问题。

解决方案是使用更好的多线程服务器运行 Bottle。樱桃为我工作。

  1. 安装樱桃:

    easy_install 樱桃

  2. 更改 Bottle 以使用cherrypy运行:

    运行(应用程序,主机='0.0.0.0',端口=8080,调试=真,重载=真,服务器='cherrypy')

注意:easy_install 它附带分发:http://pypi.python.org/pypi/distribute

祝你好运!

于 2012-05-29T00:56:11.473 回答
3

此问题已在较新版本的瓶子中得到修复。

看到这个补丁:https ://github.com/defnull/bottle/pull/529

于 2014-02-24T08:56:40.960 回答