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 ๋“ฑ๊ธ‰