Watchdog: Python2.7およびWindows7

作成日 2011年12月05日  ·  3コメント  ·  ソース: gorakhargosh/watchdog

python2.5で問題が発生したため、python 2.7も試しましたが、別のエラーが発生します。
(ctypesとwindows dllに何か問題があると思いますが、それ以上のことはわかりません...)

Cc C-スレッドThread-2のcException:
トレースバック(最後の最後の呼び出し):
__bootstrap_innerのファイル "c:Python27libthreading.py"、行552
self.run()
ファイル "c:Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversapi.py"、行192、実行中
self.queue_events(self.timeout)
ファイル「c:Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversread_directory_changes.py」、80行目、queue_events
self.watch.is_recursive)
ファイル "c:Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi_common.py"、行130、read_directory_changes
なし)
_errcheck_boolのファイル "c:Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi.py"、行103
ctypes.WinError()を発生させます
WindowsError:[エラー1]関数が正しくありません。

Incomplete (need more info) windows

最も参考になるコメント

自分でWindowsAPIを掘り下げて、問題を特定できたことを確認しました。

ReadDirectoryChangesWの戻り値を

ネットワークリダイレクタまたはターゲットファイルシステムがこの操作をサポートしていない場合、関数はERROR_INVALID_FUNCTIONで失敗します。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v = vs.85).aspx

私はネットワーク共有に取り組んできました。
監視する必要のあるファイルをローカルファイルシステムにコピーすると、修正されました。

エラーメッセージをグーグルで検索しているときに他の誰かがこの問題を見つけた場合に備えて、これをここに残しておきます。

全てのコメント3件

こんにちは、
この2年前の問題にぶつかって申し訳ありませんが、Windows 10、python2.7、watchdog0.8.3でまったく同じ問題が発生しました。

次のコードで再現できます。

import time

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class Handler(FileSystemEventHandler):
    def on_any_event(self, event):
        print "File changed: %s" % event.src_path

if __name__ == '__main__':
    event_handler = Handler()
    observer = Observer()
    observer.schedule(event_handler, '.', recursive=True)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

結果の例外は次のようになります。

Exception in thread Thread-2:
Traceback (most recent call last):
  File "c:\python27\Lib\threading.py", line 801, in __bootstrap_inner
    self.run()
  File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\api.py", line 146, in run
    self.queue_events(self.timeout)
  File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\read_directory_changes.py", line 77, in queue_events
    winapi_events = read_events(self._handle, self.watch.is_recursive)
  File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\winapi.py", line 347, in read_events
    buf, nbytes = read_directory_changes(handle, recursive)
  File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\winapi.py", line 307, in read_directory_changes
    raise e
WindowsError: [Error 1] Incorrect function.

さらに詳しい情報が必要な場合は教えてください。

自分でWindowsAPIを掘り下げて、問題を特定できたことを確認しました。

ReadDirectoryChangesWの戻り値を

ネットワークリダイレクタまたはターゲットファイルシステムがこの操作をサポートしていない場合、関数はERROR_INVALID_FUNCTIONで失敗します。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v = vs.85).aspx

私はネットワーク共有に取り組んできました。
監視する必要のあるファイルをローカルファイルシステムにコピーすると、修正されました。

エラーメッセージをグーグルで検索しているときに他の誰かがこの問題を見つけた場合に備えて、これをここに残しておきます。

これは今日私を助けました。 たぶん、これが起こった理由のもう少し詳細なメッセージでカスタムエラーを発生させる必要があります(またはこの問題へのリンクだけかもしれません)

このページは役に立ちましたか?
0 / 5 - 0 評価