如何避免在自由切换mod_python3中缓存?

How to avoid caching in freeswitch mod_python3?

提问人:Max 提问时间:12/24/2022 更新时间:12/24/2022 访问量:72

问:

为 freeswitch 开发 python 应用程序 我目前正在为 python 缓存功能而苦苦挣扎。在我的 dailplan 中,我使用 mod_python3 调用 python 脚本。该脚本导入了更多模块,我想在下一次调用中修改和测试这些模块。目前,我唯一的选择是重新启动 freeswitch,这让我有时间喝杯咖啡休息一下。 当我做对了,问题是mod_python在自由切换应用程序的整个运行时间内启动 python 应用程序。因此,一旦应用程序的模块在第一次调用时加载,它们就会保持活动状态。

作为开发人员,您有什么建议或好的解决方案如何处理缓存吗?

一种解决方案是在 fs_cli 上重新加载这个特定的 python mod,但在生产使用时,出于鲁棒性的原因,它似乎是不可加载的:

freeswitch@freeswitch> reload mod_python3
+OK Reloading XML
-ERR unloading module [Module is not unloadable]
-ERR loading module [Module already loaded]

我尝试过的另一种选择是在开始时使用启动脚本中的 importlib 和 reload 函数重新加载模块。但这无济于事,我仍然需要重新启动 freeswitch。

import demoPy.module as module.  #demoPy is the project containing a module named module :) 

import importlib
importlib.reload(module)

我尝试的最后一个选项是在我的项目文件夹中使用 pyclean 从本地存储中清理缓存文件。这清除了存储中的所有缓存文件,但对mod_python中已加载的模块没有影响。

python 缓存 freeswitch mod-python

评论

0赞 antou 2/21/2023
似乎使用 importlib.reload() 对我有用。您是否重新加载了正确的模块?此外,您可能需要在模块本身的导入中调用 reload()。如果仍然不起作用,您可以使用以下命令更快地重新启动 Freeswitchfsctl shutdown elegant restart

答: 暂无答案