Sta*_*ale 6 python multithreading simplexmlrpcserver
我有一个类,我希望通过 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()
Run Code Online (Sandbox Code Playgroud)
问题是,如果线程已经在等待 handle_request 中的请求,那么调用 ServerThread.stop(),然后调用 Thread.stop() 和 Thread.join() 不会导致线程正确停止。而且由于这里似乎没有我可以使用的任何中断或超时机制,因此我不知道如何干净地关闭服务器线程。
两个建议。
建议一是使用单独的进程而不是单独的线程。
创建一个独立的 XMLRPC 服务器程序。
从 开始subprocess.Popen()
。
测试完成后杀死它。在标准操作系统(不是 Windows)中,kill 效果很好。然而,在 Windows 中,没有简单的终止功能,但有一些方法可以实现这一点。
另一个建议是在 XMLRPC 服务器中添加一个导致服务器自毁的功能。您定义一个函数来调用sys.exit()
或os.abort()
或 引发类似的异常,该异常将停止该过程。
归档时间: |
|
查看次数: |
4388 次 |
最近记录: |