ウォッチドッグ オブザーバーを使用したフラスコ ベースの Web アプリケーションの例を探しています。より具体的には、ウォッチドッグ オブザーバーを使用して、事前定義されたディレクトリの変更を検出し、変更に基づいて Web アプリケーションを更新したいと考えています。それらのそれぞれについて多くの例を見つけることができます。つまり、flask ベースの Web アプリケーションとウォッチドッグ オブザーバーの例です。
しかし、2 つの例を統合してスムーズに実行する方法がわかりません。誰でも簡単な例を提供できますか?
また、Celery worker で watchdog オブザーバーを実行することはできますか?
ありがとう
編集: 次のように、セロリ ワーカーを使用してウォッチドッグ オブザーバーを実行し、ディレクトリとそのサブディレクトリを監視しました。
@celery.task(bind=True)
def _watcher(self):
observer = Observer()
handler = MyHandler()
observer.schedule(handler, '.')
observer.start()
try:
while True:
if not handler.event_q.empty():
event, ts = handler.event_q.get()
self.update_state(state='PROGRESS', meta={'src_path': event.src_path, 'event_type': event.event_type})
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
return {'src_path': 'srcpath', 'event_type': 'eventtype'}
次に、フロントエンド側から、1 秒ごとに GET 関数を呼び出して、変更があれば更新します。これは少しハックです。
私が最終的に達成したいのは、1) ディレクトリとそのサブディレクトリを監視し続けること、2) 変更があれば、変更に従ってデータベースを更新すること、3) 変更に基づいてフロントエンド側を更新することです。
これまでのところ、ウォッチドッグ (上記のコードの MyHandler クラス) を使用して、ファイルシステムの変更に基づいてデータベースを更新できました。しかし、フラスコ フレームワーク内の変更を観察し、フロントエンド側の変更を更新するためのより良い解決策を探しています。