Example #1
0
 def test_get_user_and_profile_through_cache(self):
     UserService.invalidate_user_cache(user_id=self.user1.id)
     UserService.invalidate_user_cache(user_id=self.user2.id)
     user1 = UserService.get_user_through_cache(self.user1.id)
     profile1 = UserService.get_profile_through_cache(self.user1.id)
     self.assertEqual(user1.id, profile1.user_id)
     UserService.invalidate_profile_cache(self.user1.id)
     profile1 = UserService.get_profile_through_cache(self.user1.id)
Example #2
0
def get_profile(user):
    from accounts.services import UserService
    if hasattr(user, '_cached_user_profile'):
        return getattr(user, '_cached_user_profile')
    profile = UserService.get_profile_through_cache(user.id)
    setattr(user, '_cached_user_profile', profile)
    return profile
Example #3
0
def get_profile(user):
    from accounts.services import UserService
    if hasattr(user, '_cached_user_profile'):
        return getattr(user, '_cached_user_profile')
    profile = UserService.get_profile_through_cache(user.id)
    # 使用user对象的属性进行缓存(cache),避免多次调用同一个user的profile时
    # 重复对数据库进行查询。这里用profile这个变量保存了从数据库读取的信息。
    setattr(user, '_cached_user_profile', profile)
    return profile
Example #4
0
def get_profile(user):
    from accounts.services import UserService

    if hasattr(user, '_cached_user_profile'):
        return getattr(user, '_cached_user_profile')
    profile = UserService.get_profile_through_cache(user_id=user.id)
    # set profile as a property of user, access profile in memory
    setattr(user, '_cached_user_profile', profile)
    return profile
Example #5
0
def get_profile(user):
    # import 放在函数里面避免循环依赖
    from accounts.services import UserService
    if hasattr(user, '_cached_user_profile'):
        return getattr(user, '_cached_user_profile')
    profile = UserService.get_profile_through_cache(user.id)
    # 使用 user 对象的属性进行缓存(cache),避免多次调用同一个 user 的 profile 时
    # 重复的对数据库进行查询
    setattr(user, '_cached_user_profile', profile)
    return profile
Example #6
0
def get_profile(user):
    # put import inside function to prevent cycling dependence
    from accounts.services import UserService

    if hasattr(user, '_cached_user_profile'):
        return getattr(user, '_cached_user_profile')
    profile = UserService.get_profile_through_cache(user.id)
    # cache User, avoid same user profile multi DB
    setattr(user, '_cached_user_profile', profile)
    return profile
Example #7
0
def get_profile(user):
    from accounts.services import UserService

    if hasattr(user, '_cached_user_profile'):
        return getattr(user, '_cached_user_profile')
    #profile, _ = UserProfile.objects.get_or_create(user=user)
    profile = UserService.get_profile_through_cache(user.id)
    # utilize attribute of user object to cache info, this is to avoid calling DB many times
    # when retrieving the same user profile
    setattr(user, '_cached_user_profile', profile)
    return profile