在后台启动简单的Python Web服务器并继续执行脚本

时间:2018-08-02 17:29:11

标签: python simplehttpserver

我试图用python启动一个简单的HTTP Web服务器,然后使用selenium驱动程序对其进行ping操作。我可以启动Web服务器,但是即使在新线程中启动它,服务器启动后它也会“挂起”。

from socket import *
from selenium import webdriver
import SimpleHTTPServer
import SocketServer
import thread


def create_server():
    port = 8000
    handler = SimpleHTTPServer.SimpleHTTPRequestHandler
    httpd = SocketServer.TCPServer(("", port), handler)
    print("serving at port:" + str(port))
    httpd.serve_forever()


thread.start_new_thread(create_server())

print("Server has started. Continuing..")

browser = webdriver.Firefox()
browser.get("http://localhost:8000")

assert "<title>" in browser.page_source
thread.exit()

服务器启动,但是服务器启动后脚本执行停止。我启动线程后的代码永远不会执行。

如何启动服务器,然后继续执行代码?

2 个答案:

答案 0 :(得分:2)

使用函数create_server(无需调用())启动线程:

thread.start_new_thread(create_server, tuple())

如果您致电create_server(),它将停在httpd.serve_forever()

答案 1 :(得分:0)

对于Python 3,您可以使用以下代码:

import threading

threading.Thread(target=create_server).start()