Watchdog: Python 2.7 y windows 7

Creado en 5 dic. 2011  ·  3Comentarios  ·  Fuente: gorakhargosh/watchdog

Como tuve algunos problemas con python2.5, probé también python 2.7 y ahora obtengo un error diferente:
(Supongo que hay algún problema con los ctypes y los dlls de Windows, pero no puedo decir mucho más que eso ...)

Cc C-cException en el hilo Thread-2:
Rastreo (llamadas recientes más última):
Archivo "c: Python27libthreading.py", línea 552, en __bootstrap_inner
self.run ()
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversapi.py", línea 192, en ejecución
self.queue_events (self.timeout)
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversread_directory_changes.py", línea 80, en queue_events
self.watch.is_recursive)
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi_common.py", línea 130, en read_directory_changes
Ninguna)
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi.py", línea 103, en _errcheck_bool
subir ctypes.WinError ()
WindowsError: [Error 1] Función incorrecta.

Incomplete (need more info) windows

Comentario más útil

Investigué un poco la API de Windows por mi cuenta y, efectivamente, pude identificar el problema.

Buscando los valores de retorno de ReadDirectoryChangesW encontré lo siguiente:

Si el redirector de red o el sistema de archivos de destino no admite esta operación, la función falla con ERROR_INVALID_FUNCTION.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v = frente a 85) .aspx

He estado trabajando en una red compartida.
Copiar los archivos que necesito ver en un sistema de archivos local lo solucionó.

Dejaré esto aquí en caso de que alguien más encuentre este problema mientras busca en Google el mensaje de error.

Todos 3 comentarios

Hola,
Lamento haberme topado con este problema de hace dos años, pero encontré exactamente el mismo problema con Windows 10, python2.7 y watchdog 0.8.3

Se puede reproducir mediante el siguiente código:

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()

La excepción resultante se ve así:

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.

Por favor dígame si necesita más información.

Investigué un poco la API de Windows por mi cuenta y, efectivamente, pude identificar el problema.

Buscando los valores de retorno de ReadDirectoryChangesW encontré lo siguiente:

Si el redirector de red o el sistema de archivos de destino no admite esta operación, la función falla con ERROR_INVALID_FUNCTION.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v = frente a 85) .aspx

He estado trabajando en una red compartida.
Copiar los archivos que necesito ver en un sistema de archivos local lo solucionó.

Dejaré esto aquí en caso de que alguien más encuentre este problema mientras busca en Google el mensaje de error.

Esto me ayudó solo hoy. Tal vez deberíamos generar un error personalizado con un mensaje un poco más detallado de por qué sucedió esto (o tal vez solo un enlace a este problema)

¿Fue útil esta página
0 / 5 - 0 calificaciones