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のWSG​​IRef)は、GET、POSTなどごとにDNSの逆引き参照を実行するため、WebログのIPアドレスの代わりに接続ホスト名を使用できます。これにより、DNSレスポンダーが高速であっても、処理速度が不必要に遅くなる可能性があります。:(

BaseHTTPRequestHandler.address_string()Bottle.pyを少しハッキングするだけで、次のように、rDNSを実行する基礎となるメソッドをオーバーロードできます。

bottle.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

HTH

于 2013-01-23T00:44:54.150 に答える
8

同じネットワーク上の別のPCからBottleアプリをテストしようとしたときに、同じ遅延の問題が発生しました。

解決策は、より優れたマルチスレッドサーバーを使用してBottleを実行することでした。チェリーピーは私のために働いた。

  1. Cherrypyをインストールします。

    easy_installcherrypy

  2. ボトルをcherrypyを使用して実行するように変更します。

    run(app、host = '0.0.0.0'、port = 8080、debug = True、reloader = True、server ='cherrypy')

注:easy_installにはDistributeが付属しています: 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 に答える