-
728x90
Remaining elements truncated 오버라이딩
쉘이나 도커 로그를 보다 보면 쿼리셋의 쿼리들이 쭉 나오다가 'remaining elements truncated' 문구가 이어지면서 쿼리들이 잘리는 상황이 많이 일어난다.
가끔씩 컴퓨터가 못 미더워서(?) 쿼리들을 일일이 확인해보고 싶을 때가 있는데, 오늘도 그런 상황이 생겨 구글링을 해 간단한 답을 얻어냈다.
다음과 같은 코드로 특정 기간 동안 링크를 생성한 유저를 뽑아내는 셀러리 큐 로직이 있다.
active_user_count = Link.objects.filter( created__range(start_date, end_date) ).values('user_id').distinct().count()
잘 작동하는 것 같지만, 테스트해보기 위해 쉘에서 한 번 카운트를 실행해 보았다.
>>> active_user_count 50
숫자로는 잘 나오는 것 같지만, 출력되는 실제 유저 아이디를 보고 싶어 다음과 같이 작성하였다.
(distinct()는 order_by() 없이 사용할 때 작동이 안 되는 경우가 많으므로 같이 사용해주자).
>>> active_user = Link.objects.filter( ... created_range = (start_date, end_date) ... ).values('user_id').order_by('user_id').distinct() >>> active_user <LinkQuerySet [{'user_id': 49}, {'user_id': 247}, {'user_id': 406}, {'user_id': 456}, {'user_id': 494}, {'user_id': 518}, {'user_id': 570}, {'user_id': 579}, {'user_id': 623}, {'user_id': 677}, {'user_id': 707}, {'user_id': 708}, {'user_id': 719}, {'user_id': 745}, {'user_id': 803}, {'user_id': 837}, {'user_id': 893}, {'user_id': 904}, {'user_id': 910}, {'user_id': 913}, '...(remaining elements truncated)...']>
하지만 위와 같이 remaining elements truncated와 같은 메시지가 출력되는데, 즉 나머지 요소들의 끝이 잘렸다는 말이다.
이러면 원래 의도에서 벗어나기 때문에 구글링을 한 후 다음과 같은 간단한 답을 얻었다.
>>> list(active_user) [{'user_id': 49}, {'user_id': 247}, {'user_id': 406}, {'user_id': 456}, {'user_id': 494}, {'user_id': 518}, {'user_id': 570}, {'user_id': 579}, {'user_id': 623}, {'user_id': 677}, .....이후 생략 ]
위와 같이 리스트를 사용하면 remaining elements truncated 출력 없이 쿼리셋안의 모든 쿼리들을 확인할 수 있다.
728x90'Back-end > Django' 카테고리의 다른 글
DRF 프로젝트에서 API 문서 자동화 하기 (drf-yasg) (0) 2021.05.30 Django REST Framework 이해하기 (0) 2021.05.24 Django Admin Site Header 변경하기 (0) 2021.05.17 DRF Blank Error 해결하기 (0) 2021.05.11 Django Coding Style (장고 코딩 스타일) (0) 2021.05.11 댓글