【发布时间】:2011-09-10 08:30:22
【问题描述】:
所以我正在开发一个包含许多模块的相当大的 python 项目。 “主”(可运行)模块是一个守护进程(实际上是一个 Thrift 守护进程),它调用其他模块以实现其实际功能。启动守护进程需要很长时间,因为某些模块的初始化过程相当冗长。
所以,当我启动守护进程时,我会等待……比如说……加载所有内容需要 2 分钟,这在总体方案中还算不错。然而,对于开发来说,这变得很痛苦,因为我需要每次都重新启动守护进程,这浪费了我很多时间。
大多数模块只需几秒钟即可加载。理想情况下,我想做的是检测特定模块中的任何文件何时发生更改,然后重新加载该特定模块。我已经知道how to reload a module,但此时我不知道如何查看特定模块的更改。请记住,在这种情况下,模块不是单个 .py 文件,而是包含 __init__.py 和 5-10 个 .py 文件的目录,因此我需要检测何时 any其中有变化。
这是项目布局(如果有什么不同的话)
project
| -- daemonize.py
| -- main.py
| -- moduleA
| | -- __init__.py
| | -- happy_panda.py
| ` -- sad_panda.py
| -- moduleB
| | -- __init__.py
| | -- takes_forever_to_load.py
| ` -- seriously_get_some_coffee.py
| -- moduleC
| | -- __init__.py
| | -- frequently_changes.py
| | -- reasons_i_hate_my_job.txt
| ` -- home_address_of_moduleB_developer.txt
` -- service.py <-- uses modules A, B, and C
感谢任何想法或建议。
编辑
感谢您的宝贵反馈。这是我根据建议创建的代码。有一个小错误,pyinotify 似乎收到了多个通知,但这对我来说是一个非常小的问题,所以我不打算修复它。
【问题讨论】:
-
在执行任何操作之前是否重新加载已检查文件是否已更改?
-
@Bastien:在查看了 reload 的文档之后,不,我不相信 reload 的行为是这样的。如果我错了,请纠正我。