コード例 #1
0
def get_user_feature_list(uid, resource_type):
    """ get recent user feature list(merge with offline)
        @return (errCode, user_feature_list_proto) 
    """
    errCode, kv_dict = model.get_online_user_feature_list(uid, [resource_type])
    if not errCode:
        logger.warn("fail to connect with server for online_user_feature_list,uid:%s,resource_type:%s" % (uid, resource_type))
        (errCode, user_feature_list_proto) = get_offline_user_feature_list(uid, resource_type)
    else:
        if kv_dict: #fetched before
            (errCode, user_feature_list_proto) = convert_user_feature_list(errCode, kv_dict, uid, resource_type, "online_user_feature_list")
        else:
            (errCode, user_feature_list_proto) = get_offline_user_feature_list(uid, resource_type)
    logger.debug("errCode:%s,get user_feature_list, resource_type:%s, uid:%s, feature_list:%s" % (
        errCode, resource_type, uid, user_feature_list_proto))
    return (errCode, user_feature_list_proto)
コード例 #2
0
def update_user_recent_feature_list(uid, resource_type, item_id, card_feature, favor_type):
    """ update user feature list, @return True|False
    """
    errCode, kv_dict = model.get_online_user_feature_list(uid, [resource_type])
    if not is_valid_data(errCode, kv_dict, "online_user_feature_list", {"uid":uid, "resource_type":resource_type}):
        return False
    user_feature_list = UserFeatureList()
    try:
        if kv_dict:
            assert(resource_type in kv_dict)
            user_feature_list.ParseFromString(kv_dict[resource_type])
            logger.debug("user_feature_list:%s" % user_feature_list)
    except:
        logger.error("bad get_online_user_feature_list:%s" % traceback.format_exc())
        return False
    errCode, item_feature_list_proto = get_item_features(resource_type, item_id)
    logger.debug("resource_type:%s, item_id:%s, user_feature_list:%s, item_feature_list:%s, card_feature:%s, favor_type:%s" % (
        resource_type, item_id, user_feature_list, item_feature_list_proto, card_feature, favor_type))
    if not errCode:
        logger.info("fail to get item feature list for click feedback:%s" % item_id)
        #still continue process for update by card_feature
    return raw_update_user_action(uid, resource_type, user_feature_list, item_feature_list_proto, card_feature, favor_type)