在后台启动简单的 python Web 服务器并继续执行脚本
Starting simple python web server in background and continue script execution
我正在尝试在 python 中启动一个简单的 HTTP Web 服务器,然后使用 selenium 驱动程序对它执行 ping 操作。我可以让 Web 服务器启动,但它 "hangs" 在服务器启动后即使我已经在新线程中启动它也是如此。
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()
服务器启动但脚本执行在服务器启动后停止。启动线程后的代码永远不会执行。
如何启动服务器然后让代码继续执行?
使用函数 create_server
启动线程(不调用它 ()
):
thread.start_new_thread(create_server, tuple())
如果您调用 create_server()
,它将在 httpd.serve_forever()
停止。
对于 Python 3 你可以使用这个:
import threading
threading.Thread(target=create_server).start()
我正在尝试在 python 中启动一个简单的 HTTP Web 服务器,然后使用 selenium 驱动程序对它执行 ping 操作。我可以让 Web 服务器启动,但它 "hangs" 在服务器启动后即使我已经在新线程中启动它也是如此。
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()
服务器启动但脚本执行在服务器启动后停止。启动线程后的代码永远不会执行。
如何启动服务器然后让代码继续执行?
使用函数 create_server
启动线程(不调用它 ()
):
thread.start_new_thread(create_server, tuple())
如果您调用 create_server()
,它将在 httpd.serve_forever()
停止。
对于 Python 3 你可以使用这个:
import threading
threading.Thread(target=create_server).start()