我有一个工具,我在其中实现网络中连接的设备的 upnp 发现。
为此,我编写了一个脚本并在其中使用了数据报类。
实现:每当在工具上按下扫描按钮时,它将运行该 upnp 脚本并列出在工具中创建的框中的设备。
这工作正常。
但是当我再次按下扫描按钮时,它给了我以下错误:
Traceback (most recent call last):
File "tool\ui\main.py", line 508, in updateDevices
upnp_script.main("server", localHostAddress)
File "tool\ui\upnp_script.py", line 90, in main
reactor.run()
File "C:\Python27\lib\site-packages\twisted\internet\base.py", line 1191, in run
self.startRunning(installSignalHandlers=installSignalHandlers)
File "C:\Python27\lib\site-packages\twisted\internet\base.py", line 1171, in startRunning
ReactorBase.startRunning(self)
File "C:\Python27\lib\site-packages\twisted\internet\base.py", line 683, in startRunning
raise error.ReactorNotRestartable()
twisted.internet.error.ReactorNotRestartable
upnp脚本的主要功能:
def main(mode, iface):
klass = Server if mode == 'server' else Client
obj = klass
obj(iface)
reactor.run()
有一个服务器类正在发送 M-search 命令(upnp)以发现设备。
MS = 'M-SEARCH * HTTP/1.1\r\nHOST: %s:%d\r\nMAN: "ssdp:discover"\r\nMX: 2\r\nST: ssdp:all\r\n\r\n' % (SSDP_ADDR, SSDP_PORT)
在服务器类构造函数中,发送 m-search 后,我正在弯腰反应堆
reactor.callLater(10, reactor.stop)
从谷歌我发现,我们不能重启反应堆,因为这是它的限制。
http://twistedmatrix.com/trac/wiki/FrequentlyAskedQuestions#WhycanttheTwistedsreactorberestarted
请指导我如何修改我的代码,以便我能够扫描设备超过 1 次并且不会收到此“反应堆不可重启错误”