我正在尝试用python创建一个Web服务器,它可以使用tkinter gui启动和停止。在tkinter中,我有一个将调用start()的按钮和一个将调用stop()的按钮。最初一切正常,服务器在我单击按钮时启动,在我单击停止按钮时也停止。当我尝试使用“开始”按钮重新启动服务器时,会收到一个运行时错误。
运行时错误:线程只能启动一次
我相信这与我已经在
初始化
我想不出怎么让这个工作。
我已经阅读了多次线程文档,但我仍在努力完全理解它。如有任何帮助,我们将不胜感激。
谢谢您!
import threading
import socketserver
import http.server
import os
class WebServer(object):
def __init__(self, host, port):
self.host = host
self.port = port
self.handler = http.server.SimpleHTTPRequestHandler
self.server = socketserver.TCPServer((self.host, self.port), self.handler)
socketserver.TCPServer.allow_reuse_address = True
self.server_thread = threading.Thread(target=self.server.serve_forever, name="Server_Thread")
self.server_thread.setDaemon(True)
def start(self):
web_dir = os.path.join(os.path.dirname(__file__), 'www')
os.chdir(web_dir)
self.server_thread.start()
def stop(self):
os.chdir('..')
self.server.shutdown()
self.server.server_close()