問題タブ [python-watchdog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - wxPython ウィンドウを閉じるときに Python ウォッチドッグが終了しない
初期化時にウォッチドッグ オブザーバーと Python プロセスを起動する wxPython GUI を含むアプリがあります。
この wx.TaskBarIcon コールバック メソッドを使用して wxPython ウィンドウを閉じています。
DestroyChildProcess は次のとおりです。
BacklogManager はマルチプロセッシング Process サブクラスであることに注意してください。私が抱えている問題は、wxPython GUI ウィンドウを閉じても、Windows タスク マネージャーに 2 つの pythonw.exe プロセスが表示されることです。次の 3 つの可能性があります。
- GUI プロセスを正しく終了していません。(プロセスかどうかは不明)
- ウォッチドッグ オブザーバーを正しく終了していません。
- backlog_manager プロセスを正しく終了していません。
コードをいじってみると、「self.backlog_manager.terminate()」という呼び出しが正しく機能しているように見え、pythonw.exe の 1 つのインスタンスが実行されたままになっています。
すべての pythonw.exe プロセスを正しく終了または停止する方法はありますか? 私は何を間違っていますか?
編集 - さらに調査すると、これは、Python スクリプトを開始するために使用している .bat スクリプトに問題があるようです。コマンドラインウィンドウを非表示にするために、基本的に pythonw.exe と START /B を使用しています。
次のようにスクリプトを開始すると、次のようになります。
コマンド ライン ウィンドウを閉じると、すべての Windows タスク マネージャー プロセスが終了します。これはおそらく pythonw.exe の問題か、プロセスの終了方法に問題があると思われます。
python - Flask(ウォッチドッグを使用)およびuWSGI - ファイルシステムからのイベントなし
Flask サーバーの実行時にウォッチドッグを使用して Python モジュールをリロードしています。デバッグ Flask serverを実行すると、すべてが機能します。しかし、uWSGIから Flask サーバーを起動すると、Linux ファイル システムから ウォッチドッグに通知が届かないため、モジュールがリロードされません。最初のリクエストが受け入れられると、 MasterServiceが初期化されます。
注:ウェイトレスも使用しようとしました。そこではすべて正常に動作しますが、uWSGI を使用することをお勧めします。アドバイスありがとうございます。
pyqt - 私のpython QObjectのスロットがemit()によってトリガーされないのはなぜですか
独自のスレッドから pyqtSignal#emit() 呼び出しを正常にトリガーする python ファイルシステム (ウォッチドッグ) コードがあります (pdb トレースによって証明されています)。
このシグナルは、connect(...) を介して自分の QObject の対応する @pyqtSlot 関数に接続する必要がありますが、実際には、ファイルシステムの変更が発行をトリガーするときにターゲット関数が呼び出されることはありません。
サンプル コードは、 https://github.com/cefn/xmlorgmode/blob/2b97ff9994132def035d325fc7f7095c9fe187f2/index.pyで確認できます。
同じフォルダーから渡された XML ファイルと XQuery ファイルを使用して、次のように呼び出すことができます。
これは初めて完全に読み込まれますが、ファイルシステムによってトリガーされたときに更新が行われることはありません。これは、コードが機能した場合に期待されることです。失敗は沈黙です。
ウォッチドッグによってトリガーされた発行が QueryDisplay#update(...) の呼び出しに対応するために必要な追加のイベントループ構造を誰かが提案できますか?
バックグラウンド
私は動的に構築された HTML を、時折変更されるフォルダー内のテキスト ファイルに裏打ちされた QWebView に渡す実験を行ってきました。QWebView#setHtml(...) は独自のスレッド内で呼び出される必要があるため、シグナルとスロットを見つけ出さなければならず、レンガの壁にぶつかりました。私がたどり着いた糸通しの配置はどういうわけか壊れていますが、その方法がわかりません。
QObject を適切なスレッド内のイベント ループに関連付けて、発行されたものを処理できるようにする方法を確立できません。実行中のコードをデバッグした後、app.exec_() ループに入る直前に #thread() を pdb と対話的に呼び出してアフィニティを確立すると、QApplication、QWebView、および私の QObject はすべて同じスレッドを共有します。これは、これらすべてのオブジェクトのすべてのイベントが app.exec_() 内で処理されることを意味すると思っていましたが、何らかの形でモデルを誤解していたに違いありません。
python - pythonウォッチドッグが複数回実行されます
私は python-watchdog を学ぼうとしていますが、設定したジョブが複数回実行される理由がちょっとわかりません。だから、ここに私のセットアップがあります:
オブザーバーは次のように設定されています。
そして最後に、次のようなアクション:
..whereは、拡張子を持つファイルが見つかった./run.sh
ときに実行したい単なるシェル スクリプトです。.done
/path/to/some/directory/bin
ただし、 a を発行してからonpython observer.py
を実行すると、シェル スクリプトが 1 回ではなく 3 回実行されることがわかります。touch job.done
/path/to/some/directory/bin
./run.sh
これが1回だけでなく3回実行される理由がわかりません(job.done
bashスクリプトでファイルを削除します)
python - Python でのマルチスレッド ソケット プログラミング
Pythonを使用してクライアント/サーバーソケットプログラミングに取り組んでいます。問題なく設定できましたが、スレッドがあると途方に暮れます。その部分を完成させる方法がわかりません。Pythonのドキュメントも見ましたが、期待していたものが見つかりませんでした。
私が達成しようとしているのは、サーバーがクライアントからの接続を受け入れ、ファイルの作成のためにディレクトリを監視していることです。両方を並行して実行しようとしていますが、うまくいきませんでした。
スレッドではまったく機能しなかったため、投稿したコードにはスレッドがありません。
ウォッチドッグを使用して /home/abcd/Maildir/new を監視し、作成された新しい電子メール ファイルを監視しています。作成された場合は、電子メールに含まれているクライアントに確認 (この場合はフラグ) を送信したいと考えています。受け取った。ソケット接続とウォッチドッグは単体ではうまくいきましたが、連携しない理由がわかりません。:(
これらのメソッドを異なるスレッドに配置して、並列に実行するにはどうすればよいですか? ご協力いただきありがとうございます。
編集:クレイグの入力後のコード:
編集2:
クライアントからサーバーに電子メールを送信すると、最初は正しい結果が得られますが、もう一度接続すると、出力が奇妙になります (「メッセージ内」が 2 回出力され、フラグ値も 2 回出力され、パイプの破損エラーが発生します)
Craig の入力後に Server.py を変更しました。
出力は次のとおりです。
ここに私の client.py があります - 私がやろうとしているのは、クライアントからサーバーへの電子メールの遅延をチェックし、サーバーからの応答を取得することだけです。
私を助けてください。ありがとう。
python-3.x - Watchdog イベント ハンドラー クラス内から PyQt クラスを呼び出す
新しいファイルのフォルダーを監視するようにウォッチドッグを設定しました。 on_created 関数を実行した後、メインの PyQt クラスに戻ろうとしています。
someFunction を呼び出せるようにする必要があります
シグナルを使用してみましたが、常にこのエラーが発生します
python - Python を使用してディレクトリの変更を監視するのではなく、ファイルを監視するにはどうすればよいですか?
質問: Python を使用してファイルの変更を監視するにはどうすればよいですか? ウォッチドッグの使用を提案していますが、ファイルではなくディレクトリしか監視できないことがわかりました。watchdog-test.pyは、watchdog のサンプル スクリプトです。
それで、最善の解決策は何ですか?Linux(Ubuntu 12.04)を使用しています。ところで、私はポーリングを使用したくありません。
python - Python 実行可能ファイルにウォッチドッグを追加するにはどうすればよいですか
私は Windows で Python 3.4 を使用しており、py2exe と cx_freeze の両方を試しました。次の手順を使用しようとすると:
http://www.py2exe.org/index.cgi/ExeWithEggs
パスが定義されていないというエラー メッセージが表示されます。以下のハック セクションで、ステップ 3 の実行方法がわかりません。個々の .py ファイルをすべてソース ディレクトリに手動でコピーするだけですか? data_files が何を表しているのかわかりませんでした。
どちらのスクリプトも、watchdog パッケージに関連する多くのモジュールが欠落していると言っています。