这个问题已经解决了!
我有一个问题:我是 Python 新手,我想做多个循环。我想运行一个 WebSocket 客户端(Autobahn),并且我想运行一个循环来显示在特定文件夹(pyinotify 或 Watchdog)中编辑的文件。
两者都在永远运行,太好了。有没有办法在我运行 FileSystemWatcher 时一次运行它们并通过 WebSocket 连接发送消息,比如回调、多线程、多处理或只是单独的文件?
factory = WebSocketClientFactory("ws://localhost:8888/ws", debug=False)
factory.protocol = self.webSocket
connectWS(factory)
reactor.run()
如果我们运行它,它将成功。但是如果我们运行这个:
factory = WebSocketClientFactory("ws://localhost:8888/ws", debug=False)
factory.protocol = self.webSocket
connectWS(factory)
reactor.run()
# Websocket client running now,running the filewatcher
wm = pyinotify.WatchManager()
mask = pyinotify.IN_DELETE | pyinotify.IN_CREATE # watched events
class EventHandler(pyinotify.ProcessEvent):
def process_IN_CREATE(self, event):
print "Creating:", event.pathname
def process_IN_DELETE(self, event):
print "Removing:", event.pathname
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch('/tmp', mask, rec=True)
notifier.loop()
这将创建 2 个循环,但由于我们已经有一个循环,'reactor.run()' 之后的代码根本不会运行。
供您参考:该项目将成为同步客户端。
非常感谢!
编辑:有一个错误。( http://pastebin.com/zHNG2c6U ) 我现在不知道该怎么办..
网络套接字类:
class webSocket(WebSocketClientProtocol):
def sendHello(self):
pass
def onOpen(self):
self.sendHello()
def onMessage(self, msg, binary):
print "Got echo: " + msg
reactor.callLater(1, self.sendHello)
def notify(ignore, filepath, mask):
print "CALLBACK"
#print "event %s on %s" % (', '.join(inotify.humanReadableMask(mask)), filepath)
edit2:你可以在这里看到完整的代码:http: //pastebin.com/iHKRcLVA
最后编辑:大家,谢谢你给我回复!将回调“def”从类中取出效果很好!