未配置Admin站点的Django+DRF项目使用Pympler的muppy时触发LookupError错误的解决咨询
未配置Admin站点的Django+DRF项目使用Pympler的muppy时触发LookupError错误的解决咨询
我有一个没有配置Admin站点的Django+DRF应用,运行一直都很顺畅。不过当我在代码里这样使用Pympler和muppy时:
class DashboardViewSet( SpecialEndpoint, ): def list(self, request, *args, **kwargs): from pympler import tracker tr = tracker.SummaryTracker() [...] tr.print_diff() return Response(...)
却触发了如下错误:
File "src/api/views/case_manager/dashboard/dashboard_viewset.py", line 33, in list tr = tracker.SummaryTracker() File "lib/python3.13/site-packages/pympler/tracker.py", line 45, in __init__ self.s0 = summary.summarize(muppy.get_objects()) ~~~~~~~~~~~~~~~~~^^ File "lib/python3.13/site-packages/pympler/muppy.py", line 42, in get_objects tmp = [o for o in tmp if not ignore_object(o)] ~~~~~~~~~~~~~^^^ File "lib/python3.13/site-packages/pympler/muppy.py", line 17, in ignore_object return isframe(obj) File "lib/python3.13/inspect.py", line 507, in isframe return isinstance(object, types.FrameType) File "lib/python3.13/site-packages/django/utils/functional.py", line 280, in __getattribute__ value = super().__getattribute__(name) File "lib/python3.13/site-packages/django/utils/functional.py", line 251, in inner self._setup() ~~~~~~~~~~~^^ File "lib/python3.13/site-packages/django/contrib/admin/sites.py", line 605, in _setup AdminSiteClass = import_string(apps.get_app_config("admin").default_site) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^ File "lib/python3.13/site-packages/django/apps/registry.py", line 165, in get_app_config raise LookupError(message) LookupError: No installed app with label 'admin'.
我排查后发现,问题应该是Django会在全局变量里延迟创建一个DefaultAdminSite实例,而muppy在遍历获取所有对象进行内存分析时,访问到了这个未初始化的实例,进而触发了找不到admin应用的错误。
有没有大佬知道该怎么绕开这个问题呀?
备注:内容来源于stack exchange,提问作者Thorben Croisé
相关产品推荐
相关产品推荐

