我想要追踪Scrapy框架中函数/类的执行顺序。在默认项目中有多个*.py文件,我想知道哪个py文件和类被按顺序执行。在每个类和函数中放置记录器似乎很傻。如何可视化这个顺序?
cprofile主要用于测量总时间。我也可以可视化一个模块内部的执行顺序,这是常见问题,但可视化多个模块则很困难。
关于trace包,我没有找到适用于像Scrapy或Django这样的大型项目的示例。跟踪使用教程仅讲解单个Python文件的情况。
我想要追踪大型项目中多个模块中的多个*.py文件,例如Scrapy,而不仅仅是一个模块。
我知道像pdb这样的调试工具,但我觉得在整个项目中设置断点很麻烦。更重要的是,它不容易概括执行顺序。
最后我通过使用Hunter解决了这个问题,它比内置的trace模块更好。Trace模块并未提供include_dir属性。
对于那些好奇如何追踪所有Scrapy代码行的人。
$PYTHONHUNTER='Q(module_startswith=["scrapy", "your_project"])' scrapy list
就Django而言,跟踪rest_framework执行代码并保存到test.log中,例如:
$PYTHONHUNTER='Q(module_startswith=["rest_framework", "your_project"]), action=CallPrinter(stream=open("test.log", "w"))' python manage.py runserver --noreload --nothreading
Python Call Graph
吗?Python Call Graph 是一个 Python 模块,用于为 Python 应用程序创建调用图可视化。 - H.Tibat