SimpleHTTPServer作为线程启动:不守护进程

phi*_*ppe 10 python httpserver

我想SimpleHTTPServer在一个单独的线程中启动一个,同时time.sleep(100)在主要的一个中执行其他操作(此处).以下是我的代码的简化示例:

from SimpleHTTPServer import SimpleHTTPRequestHandler
from BaseHTTPServer import HTTPServer

server = HTTPServer(('', 8080), SimpleHTTPRequestHandler)
print 'OK UNTIL NOW'
thread = threading.Thread(target = server.serve_forever())
print 'STUCK HERE'
thread.setdaemon = True
try:
    thread.start()
except KeyboardInterrupt:
    server.shutdown()
    sys.exit(0)

print 'OK'

time.sleep(120)
Run Code Online (Sandbox Code Playgroud)

但是,该线程仍然是"阻塞",即不作为守护进程启动,并且解释器无法到达print 'OK'.它既没有达到STUCK HERE.

我已经知道线程只会在调用时被初始化,threading.Thread(...)并且主线程仍然会更进一步,直到找到thread.start启动它的指令.

有没有更好的方法来完成这项任务?

dop*_*tar 10

改变这个:

thread = threading.Thread(target = server.serve_forever())
Run Code Online (Sandbox Code Playgroud)

为此:

thread = threading.Thread(target = server.serve_forever)
Run Code Online (Sandbox Code Playgroud)

并改变这个:

thread.setdaemon = True
Run Code Online (Sandbox Code Playgroud)

为此:

thread.daemon = True
Run Code Online (Sandbox Code Playgroud)