Python、看门狗和自引用

问题描述 投票:0回答:1

我想运行一些看门狗代码。所以这里是例子:

import time
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
from watchdog.events import FileSystemEventHandler

class FileDispatcherTask (FileSystemEventHandler):
  def __init__ (self, src, dest, queue):
    self._src = src
    self._dest = dest
    self._queue = queue;

  def dispatch (self, file):
    info = JobInfo(file)
    self._queue.addJob(info)

  def on_created (self, event):
    print ("File was created")
    print (event)

  async def run (self):
    observer = Observer()
    observer.schedule(self, self._src, recursive=False)
    observer.start()
    try:
      while True:
        time.sleep(1)
    finally:
      observer.stop()
      observer.join()

代码应该作为任务运行,其中观察者在 run 方法中设置。 Schedule 方法似乎不适用于 self,因为没有关于创建文件的输出。我会编写一个单独的类来监听事件吗,它会按预期工作。我缺少什么? self 关键字不是像 Java 中的 this 关键字吗?

python watchdog
1个回答
0
投票

好的, 我通常用静态类型语言编写代码,所以我犯了一个错误,我不小心覆盖了 FileSystemEventHandler dispatch(event) 的调度方法。更改方法名称,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.