問題タブ [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 - ウォッチドッグがフラスコの Web ページを動かなくなった
フラスコとウォッチドッグを使用してドキュメント監視スクリプトを作成しようとしています
私がやりたいことは、ディレクトリ内のファイルが変更された場合、すぐに Web ページに表示されることです。(ウェブページがブラウザで開いている場合)
最初に、以下のスクリプトを使用してコンソールでファイルの変更を印刷しようとしました。ブラウザで localhost:5000/monitor にルーティングすると、ブラウザが長時間ロードされ、ファイルが変更された場合はコンソールに表示されます. ブラウザが動かなくなった理由がわかりません 誰かがこれを理解するのを手伝ってくれますか
python-3.x - コンテナーで実行されていないウォッチドッグ オブザーバー
ウォッチドッグを使用して、ファイル システム イベントのファイル ディレクトリを監視しています。このウォッチャースクリプトがイベントを検出した場合、データベース (この場合は Mongodb) にエントリを作成します。監視対象のファイル システムは、実際には、そのファイル システムをホスト PC にリンクする Docker ボリュームです。すべてのコードは Docker コンテナーで実行されます。システム内の任意のコンテナにアタッチし、pymongo を使用してデータベースにエントリを正しく追加できます。
ホスト マシンでウォッチャーを実行することもでき、すべてが期待どおりに動作します (コンテナー内のリンクされたファイル システムからファイル システムに変更があった場合に期待どおりに動作することを含みます)。
ただし、コンテナーでウォッチャー コードを実行すると、ファイルシステム イベントによってトリガーされるイベント ハンドラーのメソッドが呼び出されないようです。確かに、作成された db エントリはありません。
コードには 3 つのソースがあります。
ウォッチャーとハンドラーを含むウォッチドッグ ディレクトリ 'watcher' [watchdog_classes]
/li>Mongodb への書き込みに使用されるクラス[data_persist モジュール]
/li>ウォッチャーをトリガーするスクリプト[watcher.py]
/li>
同じ Docker コンテナーで 3 つのコード ソースを実行しています。mongodb は別のコンテナーにあります。
docker-compose.yaml は次のようになります。
ウォッチドッグ ハンドラー イベントが呼び出されないのはなぜですか?
python - フラスコとウォッチドッグ: 複数のスレッドの開始
ファイルシステムの更新を監視してログに記録するFlaskを使用してアプリケーションを作成しています。私の起動シーケンス(デバッグモード)は次のとおりです。
- Flask アプリケーション オブジェクトの作成
- ウォッチドッグを開始
- アプリケーションを開始する
デバッグ モードで実行すると、アプリケーションは自動的に werkzeug の fsevents リローダーで再起動しますが、これは正常です。ただし、この再起動は最初のウォッチドッグ スレッドを終了しないため、この時点で 2 番目のウォッチドッグ スレッドが存在し、すべてのファイル システム イベントが複製されます。
これは本番環境では発生しませんが、デバッグに影響を与えており、ウォッチドッグの起動に問題があるのではないかと心配しています。ウォッチドッグを正常に終了させるためにやるべきことはありますか、それとも 2 回目の起動を防ぐ方法はありますか?
また、コードの編集によってアプリケーションが再起動した場合、2 番目のウォッチドッグ スレッドが正しく再起動されます。リロード時にシャットダウンしないのは、最初のリロードの前に開始する最初のウォッチドッグだけです。
flask - ウォッチドッグ オブザーバーを使用したフラスコ アプリケーション
ウォッチドッグ オブザーバーを使用したフラスコ ベースの Web アプリケーションの例を探しています。より具体的には、ウォッチドッグ オブザーバーを使用して、事前定義されたディレクトリの変更を検出し、変更に基づいて Web アプリケーションを更新したいと考えています。それらのそれぞれについて多くの例を見つけることができます。つまり、flask ベースの Web アプリケーションとウォッチドッグ オブザーバーの例です。
しかし、2 つの例を統合してスムーズに実行する方法がわかりません。誰でも簡単な例を提供できますか?
また、Celery worker で watchdog オブザーバーを実行することはできますか?
ありがとう
編集: 次のように、セロリ ワーカーを使用してウォッチドッグ オブザーバーを実行し、ディレクトリとそのサブディレクトリを監視しました。
次に、フロントエンド側から、1 秒ごとに GET 関数を呼び出して、変更があれば更新します。これは少しハックです。
私が最終的に達成したいのは、1) ディレクトリとそのサブディレクトリを監視し続けること、2) 変更があれば、変更に従ってデータベースを更新すること、3) 変更に基づいてフロントエンド側を更新することです。
これまでのところ、ウォッチドッグ (上記のコードの MyHandler クラス) を使用して、ファイルシステムの変更に基づいてデータベースを更新できました。しかし、フラスコ フレームワーク内の変更を観察し、フロントエンド側の変更を更新するためのより良い解決策を探しています。
pip - pyenv virtualenv に lektor をインストールできません: `clang' はこれらの (他の) Python バージョンに存在します
lektor
を使用して新しい virtualenvにインストールしようとしていpyenv virtualenv
ます。Python 3.7.0 で新しい virtualenv を作成するのに問題はありませんが、作成しようとするpip install lektor
と、ビルドに失敗しwatchdog
、次のエラー メッセージが表示されます。
anaconda3 バージョンに があることは理解していますがclang
、 にもバージョンがインストールされてい/usr/bin
ます。の出力which -a clang
は次のとおりです。
シムが を指すように手動で設定できますusr/bin
か? または、この問題に対する別の解決策はありますか?