是否有一种生产安全的方法来衡量使用Python生产的时间?

时间:2010-11-11 17:56:35

标签: python django profiling

我希望能够检测Python应用程序,以便我知道:

  • 页面生成时间。
  • 外部请求所花费的时间百分比(mysql,api调用)。
  • mysql查询的数量,MySQL查询的内容。

我希望这些数据来自生产(不是离线分析) - 因为在不同地方花费的时间在加载时会有所不同。

在PHP中,我可以使用XHProf或instrumentation-for-php来完成此操作。在Ruby on Rails / .NET / Java中,我可以使用New Relic。

是否有推荐用于Python或django的软件包?

3 个答案:

答案 0 :(得分:1)

是的,这是完全可能的。例如。在URL中使用一些神奇的开关,比如“?profile-me”,它会触发Django中间件中的分析。

互联网上有很多片段,例如:http://djangosnippets.org/snippets/70/或类似这样的模块:http://code.google.com/p/django-profiling/ - 但我没有使用任何片段,所以我不推荐任何内容。

无论如何,他们采用的方法与我的方法类似 - 即在包装视图的中间件中使用Python Hotshot探查器模块。对于MySQL部分,您可以使用connection.queries形式Django。

Hotshot的好处是可以使用Kcachegrind浏览其输出,如下所示:http://www.rkblog.rk.edu.pl/w/p/django-profiling-hotshot-and-kcachegrind/

答案 1 :(得分:1)

New Relic现在有一个Python包,包括通过mod_wsgi的Django。

https://support.newrelic.com/help/kb/python

答案 2 :(得分:0)

django-prometheus是处理生产工作负载的好选择,尤其是在Kubernetes这样的容器环境中。它具有开箱即用的中间件,用于跟踪请求等待时间和计数(通过视图方法)以及数据库和缓存访问时间。跟踪实际正在执行的查询并不是一个好的解决方案,但这就是ELK之类的日志记录解决方案发挥作用的地方。如果有帮助,我写了一篇文章,介绍了how to add custom metrics to a Django application