Watchdog: 파이썬 2.7 및 μœˆλ„μš° 7

에 λ§Œλ“  2011λ…„ 12μ›” 05일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: gorakhargosh/watchdog

python2.5에 λͺ‡ 가지 λ¬Έμ œκ°€ μžˆμ—ˆκΈ° λ•Œλ¬Έμ— python 2.7도 μ‹œλ„ν–ˆμ§€λ§Œ 이제 λ‹€λ₯Έ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
(ctypes 및 Windows dll에 λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μ§€λ§Œ κ·Έ 이상은 말할 수 μ—†μŠ΅λ‹ˆλ‹€...)

μŠ€λ ˆλ“œ Thread-2의 Cc C-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
μ—†μŒ)
파일 "c:Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi.py", 103ν–‰, _errcheck_bool
ctypes.WinError() λ°œμƒ
Windows 였λ₯˜: [였λ₯˜ 1] 잘λͺ»λœ κΈ°λŠ₯μž…λ‹ˆλ‹€.

Incomplete (need more info) windows

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

슀슀둜 Windows APIλ₯Ό 파고 λ“€μ—ˆκ³  문제λ₯Ό 식별할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

ReadDirectoryChangesW 의 λ°˜ν™˜ 값을

λ„€νŠΈμ›Œν¬ 리디렉터 λ˜λŠ” λŒ€μƒ 파일 μ‹œμŠ€ν…œμ΄ 이 μž‘μ—…μ„ μ§€μ›ν•˜μ§€ μ•ŠμœΌλ©΄ ERROR_INVALID_FUNCTIONκ³Ό ν•¨κ»˜ ν•¨μˆ˜κ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v=vs.85).aspx

λ„€νŠΈμ›Œν¬ 곡유 μž‘μ—…μ„ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
κ΄€μ°°ν•΄μ•Ό ν•˜λŠ” νŒŒμΌμ„ 둜컬 파일 μ‹œμŠ€ν…œμ— λ³΅μ‚¬ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ‹€λ₯Έ μ‚¬λžŒμ΄ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό κ²€μƒ‰ν•˜λŠ” λ™μ•ˆ 이 문제λ₯Ό λ°œκ²¬ν•  경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ 여기에 남겨 λ‘‘λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

μ•ˆλ…•,
이 2λ…„ 된 문제λ₯Ό λ²”ν•΄μ„œ λ―Έμ•ˆν•˜μ§€λ§Œ Windows 10, python2.7 및 watchdog 0.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.

μΆ”κ°€ 정보가 ν•„μš”ν•˜μ‹œλ©΄ 말씀해 μ£Όμ‹­μ‹œμ˜€.

슀슀둜 Windows APIλ₯Ό 파고 λ“€μ—ˆκ³  문제λ₯Ό 식별할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

ReadDirectoryChangesW 의 λ°˜ν™˜ 값을

λ„€νŠΈμ›Œν¬ 리디렉터 λ˜λŠ” λŒ€μƒ 파일 μ‹œμŠ€ν…œμ΄ 이 μž‘μ—…μ„ μ§€μ›ν•˜μ§€ μ•ŠμœΌλ©΄ ERROR_INVALID_FUNCTIONκ³Ό ν•¨κ»˜ ν•¨μˆ˜κ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v=vs.85).aspx

λ„€νŠΈμ›Œν¬ 곡유 μž‘μ—…μ„ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
κ΄€μ°°ν•΄μ•Ό ν•˜λŠ” νŒŒμΌμ„ 둜컬 파일 μ‹œμŠ€ν…œμ— λ³΅μ‚¬ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ‹€λ₯Έ μ‚¬λžŒμ΄ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό κ²€μƒ‰ν•˜λŠ” λ™μ•ˆ 이 문제λ₯Ό λ°œκ²¬ν•  경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ 여기에 남겨 λ‘‘λ‹ˆλ‹€.

이것은 였늘 λ‚˜μ—κ²Œ λ„μ›€μ΄λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œκ°€ λ°œμƒν•œ μ΄μœ μ— λŒ€ν•œ μ’€ 더 μžμ„Έν•œ λ©”μ‹œμ§€μ™€ ν•¨κ»˜ μ‚¬μš©μž 지정 였λ₯˜λ₯Ό λ°œμƒμ‹œμΌœμ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€(λ˜λŠ” 이 λ¬Έμ œμ— λŒ€ν•œ 링크일 μˆ˜λ„ 있음).

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰