首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyinotify ProcessEvent中的捕获错误

pyinotify ProcessEvent中的捕获错误
EN

Stack Overflow用户
提问于 2016-07-04 11:48:01
回答 1查看 331关注 0票数 1

我在从pyinotify捕获事件处理程序中的错误时遇到了问题。我试图对刚刚被写入后关闭的文件进行一些处理。

下面是我的脚本的简化版本:

代码语言:javascript
复制
import pyinotify
import asyncore

mask = pyinotify.IN_CLOSE_WRITE

class EventHandler(pyinotify.ProcessEvent):

    def process_IN_CLOSE_WRITE(self, event):
        try:
            do_stuff()
        except BaseException as e:
            print "Exception:" + str(e)
            pass

if __name__ == "__main__":
        try:
                wm = pyinotify.WatchManager()

                notifier = pyinotify.AsyncNotifier(wm, EventHandler())
                wdd = wm.add_watch('/dir-to-watch/', mask, rec=True)
                asyncore.loop()
        except:
                print "Unhandled error!"
                print "Details:" + str(e)
                print "Continuing anyway..."
                pass

看起来,当我得到一个错误或一个异常时,主循环中的get或者事件处理程序中的BaseException都不会捕获错误或异常。

我收到这样开头的消息:

错误:未捕获的python异常,关闭通道(:Errno 2没有这样的文件或目录:

所以我的问题是:怎样才能抓住这些例外呢?

EN

回答 1

Stack Overflow用户

发布于 2016-07-04 14:01:23

我必须创建一个定制的AsyncNotifier:

代码语言:javascript
复制
class CustomAsyncNotifier(pyinotify.AsyncNotifier):
        def handle_error(self):
                print "Handling error!"
                print "Guru meditiation #00000025.65045338"
                print ""
                print "Continuing anyway..."

然后更改我的代码以使用它:

代码语言:javascript
复制
if __name__ == "__main__":
        wm = pyinotify.WatchManager()

        notifier = CustomAsyncNotifier(wm, EventHandler())
        wdd = wm.add_watch('/mnt/md0/proxies/', mask, rec=True)
        asyncore.loop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38184002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档