我试图用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()
服务器启动,但是服务器启动后脚本执行停止。我启动线程后的代码永远不会执行。
如何启动服务器,然后继续执行代码?
答案 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()