소스 검색

[desktop] Lazily count the number of users

It's possible the metrics could get imported before the
test database has been created, which will cause an exception
to be thrown because the User database doesn't exist yet.
Erick Tryzelaar 10 년 전
부모
커밋
c0a65f3
1개의 변경된 파일2개의 추가작업 그리고 14개의 파일을 삭제
  1. 2 14
      desktop/core/src/desktop/metrics.py

+ 2 - 14
desktop/core/src/desktop/metrics.py

@@ -22,7 +22,6 @@ import threading
 
 from django.contrib.auth.models import User
 from django.contrib.auth.signals import user_logged_in, user_logged_out
-from django.db.models.signals import post_save, post_delete
 from django.dispatch import receiver
 
 from desktop.lib.metrics import global_registry
@@ -139,25 +138,14 @@ response_time = global_registry().timer(
 
 # ------------------------------------------------------------------------------
 
-user_count = global_registry().gauge(
+user_count = global_registry().gauge_callback(
     name='desktop.users.count',
+    callback=lambda: User.objects.count(),
     label='User count',
     description='Total number of users',
     numerator='users',
 )
 
-# Initialize with the current user count.
-user_count.set_value(User.objects.all().count())
-
-@receiver(post_save, sender=User)
-def user_post_save_handler(sender, **kwargs):
-  if 'created' in kwargs:
-    user_count.set_value(User.objects.all().count())
-
-@receiver(post_delete, sender=User)
-def user_post_delete_handler(sender, **kwargs):
-  user_count.set_value(User.objects.all().count())
-
 logged_in_users = global_registry().counter(
     name='desktop.users.logged-in.count',
     label='Number of logged in users',