2013-10-16 93 views
0

我對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() 

有兩個關於這個代碼的問題:

  1. 我嘗試瀏覽在真正的瀏覽器一個本地的HTML文件,我注意到我只能在serve_forever()之前放這段代碼。這是正確的方法嗎?

  2. 當我試圖關閉瀏覽器時,我發現這個程序一直在運行,我想這可能是由serve_forever()函數引起的。是對的嗎?關閉瀏覽器後,如何結束服務器?

+0

通過殺死程序或按下「Ctrl + C」按鈕來退出程序。 – Sibi

回答

0
  1. 如果你寫後httpd.serve_forever,httpd.serve webbrowser.open可能阻止執行和webbrowser.open從不執行。這就是爲什麼你沒有看到瀏覽器。你可以在httpd後打印一個打印作爲實驗,它不應該打印。

  2. webbrowser.open在與httpd不同的進程中啓動瀏覽器。

因此,當您關閉webbrowser時,httpd.serve_forever()將不會發生任何事情。就像名稱所暗示的那樣,httpd.serve_forever()將永遠爲http服務器提供服務,直到您通過ctrl + c或某些腳本(如kill -9)手動殺死它。

+0

謝謝你的解釋!所以如果我想在關閉瀏覽器時關閉服務器,我該怎麼辦? – fyr0049

相關問題