Python:一次两个循环

Python:一次两个循环,python,multithreading,loops,websocket,filesystemwatcher,Python,Multithreading,Loops,Websocket,Filesystemwatcher,这个问题已经解决了 我有一个问题:我是Python新手,我想做多个循环。我想运行一个WebSocket客户端(Autobahn),我想运行一个循环,显示在特定文件夹(pyinotify或其他Watchdog)中编辑的文件 两个都永远在运行,太好了。当我运行FileSystemWatcher时,是否有一种方法可以立即运行它们并通过WebSocket连接发送消息,比如回调、多线程、多处理或只是单独的文件 factory = WebSocketClientFactory("ws://local

这个问题已经解决了

我有一个问题:我是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()”之后的代码将根本不会运行

供您参考:此项目将是一个同步客户端

非常感谢

编辑:有一个错误。( ) 我不知道现在该怎么办

webSocket类别:

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:您可以在此处看到完整的代码:

最终编辑:
各位,谢谢你们给我回复!将回调'def'从类中删除效果很好

高速公路构建在Twisted上,Twisted是一个异步应用程序框架。您不需要显式线程来实现这一切。您可以改为使用实现FileSystemWatcher类(这里有一个示例)


我不知道这两个组件将如何相互通信,因为我已经多年没有使用Twisted了。但是这里有一个连接串行端口的例子。

有一个完整的演示,用于在Autobahn repo中通过WebSocket进行基于通知的监视和发布


这是针对Windows的,并在后台线程上运行监视。对于Unix,您应该遵循Marcelo的建议,使用Twisted附带的异步功能。

如果我能实现它,那将非常棒。我来看看!谢谢编辑:页面上的演示看起来不错,我正在测试代码:)它工作了,但崩溃了!你能检查一下解密时的错误吗?你帮我解决了问题!多亏了马塞洛的建议,它成功了,但失败了!编辑:很抱歉,没有Linux支持。。伊迪丝2:哦,你也看到了!无论如何:谢谢!该错误:这可能是代码的问题,而不是扭曲。将完整的代码上传到GitHub或其他地方。。这似乎不再是你在上面的Q中发布的代码了。好的,我会在两分钟内完成!编辑:如果需要,请查看描述:)尝试:
def notify(self、ignore、filepath、mask):
。。请注意
self
对不起:同样的错误!