From 47d6e841fd42cf9c10169c534a7d4076a8b3f08c Mon Sep 17 00:00:00 2001 From: Min RK Date: Tue, 15 May 2018 13:49:38 +0200 Subject: [PATCH] cache get_current_user result avoids raising an error rendering templates, etc. --- jupyterhub/handlers/base.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/jupyterhub/handlers/base.py b/jupyterhub/handlers/base.py index 5b5a38ad..1c9099d9 100644 --- a/jupyterhub/handlers/base.py +++ b/jupyterhub/handlers/base.py @@ -265,10 +265,17 @@ class BaseHandler(RequestHandler): def get_current_user(self): """get current username""" - user = self.get_current_user_token() - if user is not None: - return user - return self.get_current_user_cookie() + if not hasattr(self, '_jupyterhub_user'): + try: + user = self.get_current_user_token() + if user is None: + user = self.get_current_user_cookie() + self._jupyterhub_user = user + except Exception: + # don't let errors here raise more than once + self._jupyterhub_user = None + raise + return self._jupyterhub_user def find_user(self, name): """Get a user by name