1

私はpythonローカルサーバーにまったく慣れていません。Python プログラムを使用してローカル サーバーをセットアップするのに役立つスクリプトをいくつか見つけました。以下は私の変更されたコードであり、他のコードからこれを呼び出しています:

import sys
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
import webbrowser
def setup():
    HandlerClass = SimpleHTTPRequestHandler
    ServerClass  = BaseHTTPServer.HTTPServer
    Protocol = "HTTP/1.0"

    port = 8888 
    server_address = ('127.0.0.1', port)

    HandlerClass.protocol_version = Protocol
    httpd = ServerClass(server_address, HandlerClass)

    sa = httpd.socket.getsockname()
    print "Serving HTTP on", sa[0], "port", sa[1], "..."

    new = 2
    url = "127.0.0.1:8888/webVisual/tree_structure.html"
    webbrowser.open(url,new=new)

    httpd.serve_forever()

このコードに関して 2 つの質問があります。

  1. 実際のブラウザで 1 つのローカル html ファイルを参照しようとしましたが、このコードは の前にしか配置できないことに気付きましたserve_forever()。これは正しい方法ですか?

  2. ブラウザを閉じようとすると、このプログラムが実行され続けていることに気付きました。これはserve_forever()機能が原因である可能性があると考えています。そうですか?また、ブラウザを閉じた後にサーバーを終了するにはどうすればよいですか?

4

1 に答える 1

0
  1. httpd.serve_forever の後に webbrowser.open を記述すると、おそらく httpd.serve が実行をブロックし、webbrowser.open は実行されません。そのため、ブラウザが表示されません。実験として httpd の後に print を置くことができますが、決して印刷されるべきではありません。

  2. webbrowser.open は、httpd とは異なるプロセスでブラウザーを起動します。

したがって、webbrowser を閉じると、httpd.serve_forever() には何も起こりません。名前が示すように、 httpd.serve_forever() は、ctrl+c または kill -9 のようなスクリプトで手動で強制終了するまで、http サーバーを永久に提供します。

于 2013-10-16T04:18:27.913 に答える