Python で SimpleXMLRPCServer を介してテストしたいクラスがあります。単体テストをセットアップする方法は、新しいスレッドを作成し、その中で SimpleXMLRPCServer を開始することです。次に、すべてのテストを実行し、最後にシャットダウンします。
これは私のサーバースレッドです:
class ServerThread(Thread):
running = True
def run(self):
self.server = #Creates and starts SimpleXMLRPCServer
while (self.running):
self.server.handle_request()
def stop(self):
self.running = False
self.server.server_close()
問題は、ServerThread.stop() を呼び出し、続いて Thread.stop() と Thread.join() を呼び出しても、handle_request で既に要求を待機している場合、スレッドが適切に停止しないことです。また、ここには使用できる割り込みまたはタイムアウトのメカニズムがないように見えるため、サーバー スレッドをきれいにシャットダウンする方法について途方に暮れています。