この問題は解決しました!
問題があります。私は 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 ) 私は今何をすべきかわからない..
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: ここで完全なコードを見ることができます: http://pastebin.com/iHKRcLVA
最終編集: 皆さん、返信ありがとうございます! コールバック 'def' をクラスの外に置くとうまくいきました!