gpt4 book ai didi

python - pyinotify.ThreadedNotifier,process_* 未调用

转载 作者:行者123 更新时间:2023-11-28 17:55:01 27 4
gpt4 key购买 nike

我在使用 pyinotify 时遇到问题:未调用 ProcessEvent 的方法 process_*()

代码

import sys, time, syslog
from pyinotify import WatchManager, Notifier, ThreadedNotifier, ProcessEvent, EventsCodes
from daemon import Daemon


class PTmp(ProcessEvent):
def process_IN_CREATE(self, event):
syslog.syslog("creating: " + event.pathname)
def process_IN_DELETE(self, event):
syslog.syslog("creating: " + event.pathname)
def process_default(self, event):
syslog.syslog("default: " + event.pathname)

class MyDaemon(Daemon):
def run(self):
syslog.openlog('archmind',syslog.LOG_PID,syslog.LOG_DAEMON)
syslog.syslog('daemon started, entering loop')
wm = WatchManager()
mask = IN_DELETE | IN_CREATE
notifier = ThreadedNotifier(wm, PTmp())
notifier.start()
wdd = wm.add_watch('/tmp', mask, rec=True)
while True:
time.sleep(1)
wm.rm_watch(wdd.values())
notifier.stop()
syslog.syslog('exiting loop')
syslog.closelog()

if __name__ == "__main__":
daemon = MyDaemon('/tmp/archmind.pid')
if len(sys.argv) == 2:
if 'start' == sys.argv[1]:
daemon.start()
elif 'stop' == sys.argv[1]:
daemon.stop()
elif 'restart' == sys.argv[1]:
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s start|stop|restart" % sys.argv[0]
sys.exit(2)

其他一切都被记录下来。 inofity 工作正常,我已经用 inotifywait 测试过它。我可能缺少什么?

最佳答案

问题是缺少 IN_* 的导入,必须手动完成。我打电话后发现了这一点

daemon.run()

代替

daemon.start()

从而使脚本在前台运行。

关于python - pyinotify.ThreadedNotifier,process_* 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1486271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com