在 Odoo 中分析

Profiling in Odoo

我是 odoo 和代码分析的新手。我正在使用 py-spy 来分析我的 odoo 代码,因为我需要一个火焰图作为分析的输出。 py-spy 一切正常,但问题是,py-spy 需要通过在 运行 所在的终端上按 ctrl + C 或关闭来停止odoo 服务器关闭。我无法停止或重置 odoo 服务器,我也无法在服务器上执行 ** Ctrl + C**。

我曾尝试创建来做到这一点 启动 py-spy

def start_pyflame(self):
    pyflame_started = self.return_py_spy_pid('py-spy')
    error = False
    if not pyflame_started:
        self.start_pyflame()
    else:
        error = 'PyFlame Graph process already created. Use Stop button if needed.'
        _logger.error(error)

工作正常,问题出在这个

def stop_pyflame_and_download_graph(self):
        pyflame_running = self.return_py_spy_pid('py-spy')
        if pyflame_running:
            subprocess.run(["sudo", "pkill", "py-spy"])

现在的问题是当我用 pkill 终止进程或 kill 它终止了进程但同时它也终止了 py-spy,因此没有生成输出文件。

有什么方法可以停止或软杀死 py-spy 以便创建输出文件。

在此先感谢您的帮助

经过一些研究,我了解到所有这些kill命令只是杀死进程,而在这种情况下,我们需要停止进程。

这件事我通过

实现了
sudo kill -SIGINT <pid>

顾名思义,这个命令并不是killing/terminating进程,它只是通过一个中断信号让进程停止工作

这对我有用。