Esempio n. 1
0
def get_offline_user_resource_visitinfo(uid, resource_type_list):
    cache_errorCode, cache_res = cache_models.get_cache_offline_user_resource_visitinfo(uid, resource_type_list)
    return_none_keys = get_return_none_keys(cache_res, resource_type_list)
    db_errorCode = True
    db_res = {}
    if len(return_none_keys) > 0:
        logger.warning('get_offline_user_resource_visitinfo, cache has return none key: %s' % return_none_keys)
        db_errorCode, db_res = db_models.get_db_offline_user_resource_visitinfo(uid, return_none_keys)
        #logger.debug('db_Code: %s, db_res:%s' % (db_errorCode, db_res))
        for resource_type , visitinfo_data in db_res.items():
            cache_models.set_cache_offline_user_resource_visitinfo(uid, resource_type, visitinfo_data)
            logger.debug('get_offline_user_resource_visitinfo, set cache uid[%s], resource_type[%s]' % (uid, resource_type))
        if True == db_errorCode:
            for resource_type in [x for x in return_none_keys if x not in db_res.keys()]:
                cache_models.set_cache_offline_user_resource_visitinfo(uid, resource_type, DataDef.CACHE_DEFAULT_NONE_VALUE, DataDef.CACHE_NONE_EXPIRE_SECONDS)
                logger.debug('get_offline_user_resource_visitinfo, set cache uid[%s] resource_type[%s] None Value' % (uid, resource_type))
    return (cache_errorCode and db_errorCode, merge_db_cache_result(cache_res, db_res))
Esempio n. 2
0
 def test_db_user_resource_visitinfo(self):
     uid = '1234567'
     resource_type_list = ['music', 'news', 'movie']
     visit_info = VisitInfo()
     visit_info.pv_count = 5
     visit_info.click_count = 1
     visit_info.weight = 0.2
     visit_info_data = visit_info.SerializeToString()
     for resource_type in resource_type_list:
         self.assertEqual( True, db_models_update.set_db_offline_user_resource_visitinfo(uid, resource_type, visit_info_data))
     prefer_res = {}
     for resource_type in resource_type_list:
         prefer_res[resource_type] = visit_info
     res = db_models.get_db_offline_user_resource_visitinfo(uid, resource_type_list)
     real_res = {}
     self.assertEqual(True, res[0])
     for k, v in res[1].items():
         res_visit_info = VisitInfo()
         res_visit_info.ParseFromString(v)
         real_res[k] = res_visit_info
     self.assertEqual(prefer_res, real_res)