Python 帮助选择重新加载还是子流程

Python 帮助选择重新加载还是子流程,python,python-3.x,Python,Python 3.x,您好,我想知道重新导入或重新执行模块的最佳方式,因为我的所有域和应用程序都有一个web服务器,只有一个Apache会话,如果我需要对一个应用程序进行某些更改,请重新启动服务器,以及重新调用模块的最佳方式。如果我选择subprocess,我需要打印响应,但我不知道这是最安全的通信方式。请以你的经验告诉我哪一个是最好的方法 提前谢谢 在生产环境中,重新加载模块很少是个好主意;这是一种用于调试的机制。重新加载模块时,模块的内容(类、函数、数据)将被替换,但其他模块对这些项的现有引用不受影响。这对于类尤

您好,我想知道重新导入或重新执行模块的最佳方式,因为我的所有域和应用程序都有一个web服务器,只有一个Apache会话,如果我需要对一个应用程序进行某些更改,请重新启动服务器,以及重新调用模块的最佳方式。如果我选择subprocess,我需要打印响应,但我不知道这是最安全的通信方式。请以你的经验告诉我哪一个是最好的方法


提前谢谢

在生产环境中,重新加载模块很少是个好主意;这是一种用于调试的机制。重新加载模块时,模块的内容(类、函数、数据)将被替换,但其他模块对这些项的现有引用不受影响。这对于类尤其重要:内存中的现有对象仍然引用旧类,而重载后生成的对象引用新类


您可能还需要考虑另一种选择:从文件加载Python代码并执行它。与完整的子流程相比,开销更小,与程序其余部分的紧密耦合也比模块少。原则上,重新执行与重新加载模块的注意事项相同,但您不太想引用执行代码,因为这需要更多的工作。

我不理解您的设置或问题。重新启动Apache的速度如此之快,人们几乎没有注意到,我不知道为什么单个Apache会话意味着不能单独重新启动python服务器。@S.Lott是的,我使用的是mod_wsgi,但这不是问题所在problem@hidura:当您触摸
wsgi
脚本时,应用程序将重新加载。这难道不能完全解决你的问题吗?@Lennart Regebro速度很快,但是如果我有3个应用程序(a、b、c)在同一个Apache会话上运行,并且我重新启动会话,因为我对应用程序“c”做了一些更改,“a”和“b”将受到影响,这绝对不是计划。因为Apache将在重新启动时关闭所有请求,恢复可能需要5 mls,但如果在此期间出现任何请求,服务器将不会响应。这是个问题,因为这不是很专业的事情。我更喜欢避免这个问题,并让应用程序与Apache保持半独立性。谢谢,这意味着我将使用子流程,因为我不需要花太多时间编写长代码。谢谢