浏览代码

[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.models import User
 from django.contrib.auth.signals import user_logged_in, user_logged_out
 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 django.dispatch import receiver
 
 
 from desktop.lib.metrics import global_registry
 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',
     name='desktop.users.count',
+    callback=lambda: User.objects.count(),
     label='User count',
     label='User count',
     description='Total number of users',
     description='Total number of users',
     numerator='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(
 logged_in_users = global_registry().counter(
     name='desktop.users.logged-in.count',
     name='desktop.users.logged-in.count',
     label='Number of logged in users',
     label='Number of logged in users',