diff --git a/apps/authentication/backends/drf.py b/apps/authentication/backends/drf.py
index 3822ec4a5..f6818e4a4 100644
--- a/apps/authentication/backends/drf.py
+++ b/apps/authentication/backends/drf.py
@@ -8,6 +8,7 @@ from django.utils.translation import gettext as _
 from rest_framework import authentication, exceptions
 
 from common.auth import signature
+from common.decorators import delay_run
 from common.utils import get_object_or_none, get_request_ip_or_data, contains_ip
 from ..models import AccessKey, PrivateToken
 
@@ -16,14 +17,22 @@ def date_more_than(d, seconds):
     return d is None or (timezone.now() - d).seconds > seconds
 
 
-def after_authenticate_update_date(user, token=None):
-    if date_more_than(user.date_api_key_last_used, 60):
-        user.date_api_key_last_used = timezone.now()
-        user.save(update_fields=['date_api_key_last_used'])
+@delay_run(ttl=60)
+def update_token_last_used(token):
+    token.date_last_used = timezone.now()
+    token.save(update_fields=['date_last_used'])
 
-    if token and hasattr(token, 'date_last_used') and date_more_than(token.date_last_used, 60):
-        token.date_last_used = timezone.now()
-        token.save(update_fields=['date_last_used'])
+
+@delay_run(ttl=60)
+def update_user_last_used(user):
+    user.date_api_key_last_used = timezone.now()
+    user.save(update_fields=['date_api_key_last_used'])
+
+
+def after_authenticate_update_date(user, token=None):
+    update_user_last_used(user)
+    if token:
+        update_token_last_used(token)
 
 
 class AccessTokenAuthentication(authentication.BaseAuthentication):