您好我想知道重新导入或重新执行模块的最佳方法,因为我有一个Web服务器只有一个Apache会话用于我的所有域和应用程序,而且如果我需要在一个应用程序上进行一些更改重启服务器会影响其他人,所以寻找召回模块的最佳方法。如果我选择子流程,我将需要打印响应,但我不知道是最安全的通信方式。请告诉我你的经历哪种方式最好?
提前致谢!
答案 0 :(得分:1)
在生产环境中重新加载模块很少是个好主意;它是一种用于调试的机制。重新加载模块时,模块的内容(类,函数,数据)将被替换,但不会影响其他模块对这些项的现有引用。这对于类来说尤其重要:内存中的现有对象仍然引用旧类,而重新加载后生成的对象引用新类。
您可能还需要考虑另一种方法:从文件加载Python代码并执行它。与完整的子进程相比,开销更少,并且与模块相比,与程序其余部分的耦合更少。原则上同样的注意事项适用于重新执行重新加载模块,但是你更不愿意引用exec'd代码,因为它更有用。