问题标签 [python-watchdog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何获取导致文件系统事件的进程的 PID?
我正在考虑与python-watchdog
. 有没有办法确定哪个进程 (PID) 导致了检测到的事件?
背景:我正在寻找一种方法来检测由某些编辑器(如vim
、pycharm
或kate
. 简而言之,这些编辑器在保存更改时不会“修改”原始文件。相反,他们创建了一个新的并将其与旧的交换 - 以略有不同的各种方式。请参阅中的相关问题python-watchdog
。我不是重新配置这些编辑器,而是寻找检测这些 [create/delete/move] 事件序列并可靠地重新解释为原始文件的“伪修改”事件的方法。
python - 看门狗卡住了烧瓶网页
我正在尝试使用烧瓶和看门狗创建文档监控脚本
我想要做的是,如果目录中的文件发生更改,它应该立即显示在网页中。(如果网页在浏览器中打开)
最初,我尝试在使用以下脚本时在控制台中打印文件更改,当我在浏览器中路由到 localhost:5000/monitor 时,浏览器正在加载很长时间,如果文件被更改,它会显示在控制台中. 我不明白为什么浏览器卡住了有人可以帮助我理解这一点
python - python看门狗错误:OSError:[WinError 87]参数不正确
每次文件更改时,我都试图运行一个函数。看门狗似乎是在没有轮询的情况下执行此操作的主要解决方案。
但是,我的代码返回错误:
代码直接来自文档并粘贴在下面:
我在带有看门狗 0.8.3 的 Windows Server 2012 上运行 Python 3.6 (Anaconda)。
编辑:尝试降级到 Python 3.5.2 但仍然得到相同的错误。
python-3.5 - pywatchdog 和 pyinotify 未检测到 ftp 创建目录中文件的更改
我有一个应用程序监控文件发送到 FTP 服务器(proftpd 1.3.5a)。我正在使用 pywatchdog 监视 FTP 服务器根目录(本地运行的应用程序)上的文件创建,但在某些非常特定的情况下它不会发出通知:当我通过 ftp 创建一个新目录,然后在此目录下创建一个文件. 文件创建/修改事件未被捕获!
为了以简单的方式重现它,我使用了 pyinotify (0.9.6) 本身,看起来问题来自那里。因此,重现问题的简单方法:
- 使用默认设置在服务器上安装proftpd和pyinotify(python3)
- 在服务器中,运行以下命令来监控 ftp root(递归和自动添加已打开 - 考虑用户“用户”):
python3 -m pyinotify -v -r -a /home/user
- 在客户端中,创建一个 sample.txt,连接 ftp 服务器并按以下顺序发出以下命令:
mkdir dir_a cd dir_a put sample.txt
- 不会有与 sample.txt 相关的事件 - 既不创建也不修改!
我试图通过在观察到的目标中手动创建和移动目录并在这些目录中创建文件来消除问题中的 ftp 因素,但问题没有发生 - 这一切都很顺利。
任何帮助将不胜感激!
python-3.x - 看门狗观察者不在容器中运行
我正在使用看门狗来监视文件目录中的文件系统事件。如果此观察程序脚本检测到事件,我想在数据库中创建一个条目(在本例中为 Mongodb)。要监视的文件系统实际上是将其文件系统链接到我的主机的 Docker 卷。所有代码都在 docker 容器中运行。我可以附加到系统中的任何容器并使用 pymongo 正确地将条目添加到数据库中。
我还可以在主机上运行观察程序,并且所有工作都按预期工作(包括如果容器中的链接文件系统对文件系统发生更改,则按预期工作。
但是,当我在容器中运行观察程序代码时,文件系统事件触发的事件处理程序中的方法似乎永远不会被调用。当然没有创建数据库条目。
有3个代码来源:
看门狗目录 'watcher' 包括一个观察者和一个处理程序[watchdog_classes]
/li>用于写入 Mongodb 的类[data_persist 模块]
/li>触发观察者的脚本[watcher.py]
/li>
我在同一个 Docker 容器中运行 3 个代码源,mongodb 在另一个容器中。
docker-compose.yaml 看起来像这样:
为什么不调用看门狗处理程序事件?
python - 烧瓶和看门狗:多线程启动
我正在使用 Flask 编写一个应用程序,它监视文件系统的更新并记录它们。我的启动顺序(在调试模式下)是:
- 创建 Flask 应用程序对象
- 启动看门狗
- 启动应用程序
在调试模式下运行时,应用程序使用werkzeug的fsevents reloader自动重启,这是正常的;但是,此重新启动不会终止第一个看门狗线程,因此此时有第二个看门狗线程,导致每个文件系统事件都被复制。
这在生产中不会发生,但它影响了我的调试,让我担心我在启动看门狗时做错了什么。为了让看门狗干净地退出,我应该做些什么,或者以某种方式防止它再次启动?
此外,当应用程序由于代码编辑而重新启动时,第二个看门狗线程确实会正确重新启动;只有在初始重新加载之前启动的第一个看门狗不会在重新加载时关闭。
flask - 带有看门狗观察器的烧瓶应用程序
我正在寻找一个带有看门狗观察者的基于烧瓶的 Web 应用程序的示例。更具体地说,我想使用看门狗观察器来检测预定义目录中的任何更改,并根据这些更改更新 Web 应用程序。我可以为它们中的每一个找到许多示例,即基于烧瓶的 Web 应用程序和看门狗观察者示例。
但是,我不知道如何整合两个示例并顺利运行它们。谁能提供一个简单的例子?
另外,我想知道我是否可以用芹菜工人运行看门狗观察者?
谢谢
编辑:我使用芹菜工人运行看门狗观察者来观察一个目录及其子目录,如下所示:
然后,从前端,每隔 1 秒,它调用 GET 函数来更新任何更改(如果有)。这有点骇人听闻。
我最终想要实现的是 1) 继续关注目录及其子目录,2) 如果有任何更改,根据更改更新数据库,以及 3) 根据更改更新前端。
到目前为止,我可以使用看门狗(上面代码中的 MyHandler 类)基于文件系统中的更改来更新数据库。但是,我仍在寻找更好的解决方案来观察烧瓶框架内的变化并更新前端的变化。
pip - 无法在 pyenv virtualenv 中安装 lektor:“clang”存在于这些(其他)Python 版本中
我正在尝试lektor
使用pyenv virtualenv
. 我用 Python 3.7.0 制作新的 virtualenv 没有问题,但是当我尝试时pip install lektor
,我得到一个构建失败watchdog
并出现以下错误消息:
我知道 anaconda3 版本有clang
,但我也有一个版本安装在/usr/bin
. 的输出which -a clang
是:
我可以手动将垫片设置为指向usr/bin
吗?或者这个问题有不同的解决方案吗?
python - 无法移动文件python
之前已经给出了一些类似的解决方案,但似乎没有一个对我有用。
代码:
当我打印 new_files 我得到 ->('new_files = ', ['sample.tsv'])
但mv
命令给出了这个错误:
mv: cannot stat 'sample.tsv': No such file or directory
有人可以帮我理解这里可能出了什么问题吗?!
谢谢!
python - 使 .log 文件持久化
我有一个生成 .log 文件的软件,问题是它们不是持久的(每次程序尝试编写一个事件时,它可能会重写过去的事件,这是不可取的)
你知道我可以编写一个 python 脚本来检测程序何时打开一个 .log 文件以写一些东西并确保他没有被覆盖吗?
谢谢!