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

关于这段代码有两个问题:

  1. 我尝试在真实浏览器上浏览一个本地的html文件,我注意到我只能将这段代码放在serve_forever(). 这是正确的做法吗?

  2. 当我尝试关闭浏览器时,我注意到这个程序一直在运行,我认为这可能是由该serve_forever()功能引起的。那正确吗?关闭浏览器后如何结束服务器?

4

1 回答 1

0
  1. 如果您在 httpd.serve_forever 之后编写 webbrowser.open,则 httpd.serve 可能会阻止执行并且 webbrowser.open 永远不会执行。这就是您看不到浏览器的原因。您可以在 httpd 之后打印作为实验,它不应该打印。

  2. webbrowser.open 在不同于 httpd 的进程中启动浏览器。

因此,当您关闭 webbrowser 时,httpd.serve_forever() 将不会发生任何事情。顾名思义,httpd.serve_forever() 将永远为 http 服务器提供服务,直到您通过 ctrl+c 或类似 kill -9 之类的脚本手动终止它。

于 2013-10-16T04:18:27.913 回答