Watchdog: рдкрд╛рдпрдерди 2.7 рдФрд░ рд╡рд┐рдВрдбреЛрдЬ 7

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рджрд┐рд╕ре░ 2011  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: gorakhargosh/watchdog

рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЕрдЬрдЧрд░ 2.5 рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдЬрдЧрд░ 2.7 рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЕрдм рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
(рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ctypes рдФрд░ windows dll рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ ...)

рдереНрд░реЗрдб -2 рдореЗрдВ рд╕реАрд╕реА рд╕реА-рд╕реАрдПрдХреНрд╕рдкреНрд╢рди:
рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "c:Python27libthreading.py", рд▓рд╛рдЗрди 552, __bootstrap_inner рдореЗрдВ
рд╕реЗрд▓реНрдл.рд░рди ()
рдлрд╝рд╛рдЗрд▓ "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, рдХреНрдпреВ_рдЗрд╡реЗрдВрдЯреНрд╕ рдореЗрдВ
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 ()
WindowsError: [рддреНрд░реБрдЯрд┐ 1] рдЧрд▓рдд рдХрд╛рд░реНрдпред

Incomplete (need more info) windows

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрдпрд╛ рдХреБрдЫ рдиреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкреАрдЖрдИ рдореЗрдВ рдЦреБрдж рдХреЛ рдЦреЛрдж рд▓рд┐рдпрд╛ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

ReadDirectoryChangesW рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЛ

рдпрджрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рдХ рдпрд╛ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди ERROR_INVALID_FUNCTION рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v=vs.85).aspx

рдореИрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╢реЗрдпрд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдЧреБрдЧрд▓ рдХрд░рддреЗ рд╕рдордп рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рдЗрд╕ рджреЛ рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдореБрджреНрджреЗ рдХреЛ рдЙрдЫрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ 10, рдкрд╛рдпрдерди 2.7 рдФрд░ рд╡реЙрдЪрдбреЙрдЧ 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.

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдХреБрдЫ рдиреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкреАрдЖрдИ рдореЗрдВ рдЦреБрдж рдХреЛ рдЦреЛрдж рд▓рд┐рдпрд╛ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

ReadDirectoryChangesW рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЛ

рдпрджрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рдХ рдпрд╛ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди ERROR_INVALID_FUNCTION рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v=vs.85).aspx

рдореИрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╢реЗрдпрд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдЧреБрдЧрд▓ рдХрд░рддреЗ рд╕рдордп рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред

рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЖрдЬ рд╣реА рдорджрдж рдорд┐рд▓реАред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рдЙрдард╛рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖ (рдпрд╛ рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рд▓рд┐рдВрдХ)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

yarko picture yarko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bhargavrpatel picture bhargavrpatel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JeromeHoen picture JeromeHoen  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alt3red picture alt3red  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AdrienPensart picture AdrienPensart  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ