使用 statprof 分析 Django 视图 - 不能在线程中使用信号

Posted

技术标签:

【中文标题】使用 statprof 分析 Django 视图 - 不能在线程中使用信号【英文标题】:Using statprof to profile a Django view - can not use signals in thread 【发布时间】:2012-05-25 06:36:08 【问题描述】:

statprof 是 Python 的统计分析工具。文档说它只能用于分析主线程。因此,如果您使用它来分析在使用./manage.py runserver 时处理请求期间调用的某些函数,它会引发 ValueError: signal only works in main thread。

我看到了两种可能的方法来解决这个问题(除了从控制台调用函数,这是可能的,但不是那么方便):

1) 破解 statprof,使其不使用信号 - 但不清楚如何去做,或者是否有可能。

2) 让 runserver 命令运行主线程中的所有内容。

也许还有其他解决方案?有人在 django 视图中使用过 statprof 吗?

【问题讨论】:

【参考方案1】:

如果您在使用 statprof 时执行./manage.py runserver --noreload,它将在单线程中运行开发服务器并解决此问题。

【讨论】:

对我不起作用。但是,./manage.py --noreload --nothreading 可以。

以上是关于使用 statprof 分析 Django 视图 - 不能在线程中使用信号的主要内容,如果未能解决你的问题,请参考以下文章

逐行分析 Django 视图

Django CBV源码分析

django源码分析——处理请求到wsgi及视图view

Django 之restfromwork 源码分析之--视图组件

django中CBV源码分析

django之视图层