Procházet zdrojové kódy

[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 před 10 roky
rodič
revize
c0a65f3
1 změnil soubory, kde provedl 2 přidání a 14 odebrání
  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',