Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django性能测试套件';ll报告指标(数据库查询等)_Python_Django_Performance_Django Orm - Fatal编程技术网

Python Django性能测试套件';ll报告指标(数据库查询等)

Python Django性能测试套件';ll报告指标(数据库查询等),python,django,performance,django-orm,Python,Django,Performance,Django Orm,我有一个复杂的Django web应用程序,它投入了许多人-年的工作。有时可能需要优化。我可以使用(比如)django的测试客户端编写几个常见的操作/流脚本。有没有一些程序,在给定这样一个python脚本的情况下,会运行,并报告各种django特定的性能指标,比如“运行sql查询的数量” 本质上类似于unittest测试套件,但它不会报告“0个测试失败”,而是报告“进行了X db查询” 我可以自己写,这不是一个复杂的问题,但我想知道以前有没有人做过 我知道Django调试工具栏,它已经可以做很多

我有一个复杂的Django web应用程序,它投入了许多人-年的工作。有时可能需要优化。我可以使用(比如)django的测试客户端编写几个常见的操作/流脚本。有没有一些程序,在给定这样一个python脚本的情况下,会运行,并报告各种django特定的性能指标,比如“运行sql查询的数量”

本质上类似于unittest测试套件,但它不会报告“0个测试失败”,而是报告“进行了X db查询”

我可以自己写,这不是一个复杂的问题,但我想知道以前有没有人做过


我知道Django调试工具栏,它已经可以做很多这方面的工作了,但是是否有更多的“命令行”和工作在多个页面上,而不是一个页面刷新。同样,获取实际查询也相对容易。但是有人把整个过程都打包到脚本/库中了吗?

您可以创建一个测试用例祖先,类似于PerformanceTestCase,它使用setUp()启动计时器,使用tearDown()测量所花费的时间和sql查询,然后根据需要输出

class PerformanceTestCase(TestCase):
    def setUp(self):
        self.begin_time = datetime.datetime.now()

    def tearDown(self):
        delta = datetime.datetime.now() - self.begin_time
        print 'Time taken', delta.seconds

        from django.db import connection
        print 'SQL queries', len(connection.queries)
也许你需要重置连接,但我认为它在测试之间被重置。

使用类似或结合类似的非阻塞统计数据,允许你测量任何东西,并实时绘制它们。最棒的是,它可以让你的工程师轻松地设计出他们需要的任何东西。通过连接,您可以将应用程序与内存/cpu使用情况、数据库查询进行对比

以下是一张来自a的关于etsy如何使用石墨的示例图像:


这是一个类似的问题,解释了如何查看django的查询+statsd为1。pystatsd模块非常容易使用。Graphite有一些你必须习惯的怪癖,不熟悉opentsdbYes,这就是我正在考虑做的。最好在Bechmark期间实现多次运行每个测试的选项