فهرست منبع

[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',