μλ νμΈμ μ¬λ¬λΆ,
QNAP λ΄λΆμ ν΄λλ₯Ό λͺ¨λν°λ§ν λ μλ‘ μμ±λ νμΌμ λν μ΄λ²€νΈλ₯Ό κ°μ Έμ¬ μ μμ΅λλ€. κ·Έλ¬λ μ νμΌμ΄ λλ ν λ¦¬μΈ κ²½μ° μμΉλ μ μμ€ν μ€λ₯μ ν¨κ» μΆ©λν©λλ€.
νμΌμ΄ μ¬μ ν 볡μ¬λκ³ μκΈ° λλ¬Έμ΄λΌκ³ μκ°νμ§λ§ μ΄κ²μ΄ 리μ€λλ₯Ό μΆ©λμν€λ μ΄μ κ° λμ΄μλ μ λ©λλ€.
μμ© νλ‘κ·Έλ¨μ΄ Windows 8.1 Proμμ μ€ν μ€μ
λλ€.
QNAP νμ¨μ΄ λ²μ : 3.7.2 λΉλ 20120719
μ€ν μΆμ :
Exception in thread Thread-3:
Traceback (most recent call last):
File "C:\Python34\lib\threading.py", line 920, in _bootstrap_inner
self.run()
File "C:\Python34\lib\site-packages\watchdog-0.8.3-py3.4.egg\watchdog\observers\api.py", line 146, in run
self.queue_events(self.timeout)
File "C:\Python34\lib\site-packages\watchdog-0.8.3-py3.4.egg\watchdog\observers\read_directory_changes.py", line 77, in queue_events
winapi_events = read_events(self._handle, self.watch.is_recursive)
File "C:\Python34\lib\site-packages\watchdog-0.8.3-py3.4.egg\watchdog\observers\winapi.py", line 347, in read_events
buf, nbytes = read_directory_changes(handle, recursive)
File "C:\Python34\lib\site-packages\watchdog-0.8.3-py3.4.egg\watchdog\observers\winapi.py", line 307, in read_directory_changes
raise e
File "C:\Python34\lib\site-packages\watchdog-0.8.3-py3.4.egg\watchdog\observers\winapi.py", line 303, in read_directory_changes
ctypes.byref(nbytes), None, None)
File "C:\Python34\lib\site-packages\watchdog-0.8.3-py3.4.egg\watchdog\observers\winapi.py", line 108, in _errcheck_bool
raise ctypes.WinError()
OSError: [WinError 58] The specified server cannot perform the requested operation.
WinError 64 λ° λ€μ λ©μμ§κ° μλ λμΌν λ¬Έμ κ° μμ΅λλ€. μ§μ λ λ€νΈμν¬ μ΄λ¦μ λ μ΄μ μ¬μ©ν μ μμ΅λλ€. μ΄κ²μ μ¬μ©ν μ μκ² λ νμΌ μλ²(SMB 곡μ )μμ ν΄λλ₯Ό μ 곡ν λ λ°μν©λλ€.
λμ€μ κ΄μ°°μ μ°κ²°μ λ€μ μλνκΈ° μν΄ μ΄λ¬ν μ’ λ₯μ μ€λ₯λ₯Ό μ΄λ»κ² μ‘μλΌ μ μμ΅λκΉ?
λν μ΄μ dirwatcher μ€λ λλ₯Ό μ§μ°/μ¬μλνλ μ루μ
μ μ°Ύκ³ μμ΅λλ€.
OSError: [WinError 64] μ§μ λ λ€νΈμν¬ μ΄λ¦μ λ μ΄μ μ¬μ©ν μ μμ΅λλ€.
μ격 νμΌ κ³΅μ λ₯Ό λͺ¨λν°λ§ν λ WinError 64 λ©μμ§κ° νμλλ κ²κ³Ό λμΌν λ¬Έμ κ° μμμ΅λλ€. λλ κ²°κ΅ μ€λ₯λ₯Ό ν¬μ°©νκ³ λ³΅κ΅¬ν μ μλ watchdog.utils.BaseThread ν΄λμ€ μ£Όμμ μμ λνΌλ₯Ό λ§λ€μμ΅λλ€. κ·Έλ° λ€μ Observerλ₯Ό λ§λ€κΈ° μ μ λνΌλ‘ ββμλ BaseThread ν΄λμ€λ₯Ό μμμ΄ ν¨μΉν©λλ€. μ κ²½μ°μλ run λ©μλμμ λ°μν μ μλ λͺ¨λ μμΈλ₯Ό ν¬μ°©νκ³ λ€λ₯Έ μ€λ λμμ μ¬μ©ν λκΈ°μ΄μ μΆκ°ν©λλ€. ν΄ν€ μ루μ μ΄μ§λ§ μμ€ μ½λ λ³κ²½ μμ΄λ μ΅μ μ΄ λ§μ§ μμ΅λλ€.
import logging
import threading
import watchdog.utils
logger = logging.getLogger(__name__)
class BaseThreadWrapper(watchdog.utils.BaseThread):
"""
Wrapper around watchdog BaseThread class.
"""
queue = None
def __init__(self):
super(BaseThreadWrapper, self).__init__()
self._original_run = self.run
self.run = self.run_wrapper
def run_wrapper(self):
try:
self._original_run()
except Exception as e:
logger.exception('%s thread exited with error',
threading.current_thread().name)
self.queue.put(e)
watchdog.utils.BaseThread = BaseThreadWrapper
watchdogμμ μ΄λ€ μ루μ (μ½λ λ³κ²½)μ λ³΄κ³ μΆμ΅λκΉ?
κ°μ₯ μ μ©ν λκΈ
λν μ΄μ dirwatcher μ€λ λλ₯Ό μ§μ°/μ¬μλνλ μ루μ μ μ°Ύκ³ μμ΅λλ€.
OSError: [WinError 64] μ§μ λ λ€νΈμν¬ μ΄λ¦μ λ μ΄μ μ¬μ©ν μ μμ΅λλ€.