import os # from log import Log # log_ = Log() class BaseConfig(object): # 产品标识 APP_TYPE = { 'VLOG': 0, # vlog 'LOVE_LIVE': 4, # 票圈视频 'LONG_VIDEO': 5, # 内容精选 'SHORT_VIDEO': 6, # 票圈短视频 'WAN_NENG_VIDEO': 17, # 万能影视屋 'LAO_HAO_KAN_VIDEO': 18, # 老好看视频 'ZUI_JING_QI': 19, # 票圈最惊奇 } # abTest AB_TEST = { 'w_h_rate': [APP_TYPE['LONG_VIDEO']], # 视频宽高比实验(每组的前两个视频调整为横屏视频), 已下线 'position_insert': [APP_TYPE['SHORT_VIDEO'], APP_TYPE['LOVE_LIVE']], 'relevant_video_op': [APP_TYPE['LONG_VIDEO']], # 相关推荐强插实验(运营对某些视频给定一些相关视频,调整为对应视频相关推荐的头部) } # abCode AB_CODE = { 'initial': 10000, # 初始 'w_h_rate': 10001, # 视频宽高比实验(每组的前两个视频调整为横屏视频),已下线 'position_insert': 10002, # 按位置插入 'relevant_video_op': 10003, # 运营对某些视频给定一些相关视频,调整为对应视频相关推荐的头部 } # pushFrom PUSH_FROM = { 'rov_recall': 'recall_pool', # rov召回池 'flow_recall': 'flow_pool', # 流量池 'top': 'op_manual', # 置顶 'bottom': 'bottom_strategy', # 一层兜底 'bottom_last': 'bottom_strategy_last', # 二层兜底 'position_insert': 'position_insert', # 按位置插入 'relevant_video_op': 'relevant_video_op', # 相关推荐强插 } # category id mapping CATEGORY = { 'recommend': [55], # 推荐 'other': [1, 2, 3] # 其他类别 } # 前k个从ROV召回池中获取视频 K = 3 # 从流量池获取视频的概率设置 P = 0.15 # ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{date} RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.' # appType = 6, ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.apptype.h.item.score.{appType}.{h} RECALL_KEY_NAME_PREFIX_APP_TYPE = 'com.weiqu.video.recall.hot.apptype.h.item.score.' # 流量池redis key前缀,完整格式 com.weiqu.video.flowpool.hot.item.score.{appType} FLOW_POOL_KEY_NAME_PREFIX = 'com.weiqu.video.flowpool.hot.item.score.' # 修改ROV的视频 redis key UPDATE_ROV_KEY_NAME = 'com.weiqu.video.update.rov.item.score' # 首页推荐预曝光列表redis key 前缀,完整key格式:com.weiqu.video.hot.recommend.previewed.{appType}.{mid} PREVIEW_KEY_PREFIX = 'com.weiqu.video.hot.recommend.previewed.' # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.{appType}.{mid}.{date} LAST_VIDEO_FROM_ROV_POOL_PREFIX = 'com.weiqu.video.rov.pool.last.' # 本地记录视频的可分发数,控制分发,完整key格式:com.weiqu.video.flowpool.local.distribute.count.{h} # LOCAL_DISTRIBUTE_COUNT_PREFIX = 'com.weiqu.video.flowpool.local.distribute.count.' # 本地记录视频的可分发数,控制分发,完整key格式:com.weiqu.video.flowpool.local.distribute.count.{videoId}.{flowPool} LOCAL_DISTRIBUTE_COUNT_PREFIX = 'com.weiqu.video.flowpool.local.distribute.count.' # 从ROV召回池获取视频的最大频次,限制每次请求的获取次数 MAX_FREQ_FROM_ROV_POOL = 3 # 兜底视频redis存储key BOTTOM_KEY_NAME = 'com.weiqu.video.bottom' # 生效中的置顶视频列表 redis key TOP_VIDEO_LIST_KEY_NAME = 'com.weiqu.video.top.item.score.area' # 按位置排序redis存储key RECALL_POSITION1_KEY_NAME = 'com.weiqu.video.recall.hot.apptype.h.item.score.position.1' RECALL_POSITION2_KEY_NAME = 'com.weiqu.video.recall.hot.apptype.h.item.score.position.2' # rov召回池更新时间 ROV_UPDATE_H = 6 ROV_UPDATE_MINUTE = 30 # 短视频召回池更新时间 每个小时的15分更新成功 ROV_UPDATE_MINUTE_6 = 15 # 置顶视频区域 为 全部 的code ALL_AREA_CODE = '000000' # width : height > 1 的视频列表 redis key, zset存储,value为videoId,score为w_h_rate W_H_RATE_UP_1_VIDEO_LIST_KEY_NAME = { 'rov_recall': 'com.weiqu.video.rov.w.h.rate.1.item', # rov召回池视频 'bottom_last': 'com.weiqu.video.bottom.last.w.h.rate.1.item' # 二次兜底视频 } # 头部视频对应运营强插的相关视频 redis 存储 key 前缀, 完整key格式:com.weiqu.video.relevant.videos.item.{videoId} RELEVANT_VIDEOS_WITH_OP_KEY_NAME = 'com.weiqu.video.relevant.videos.item.' class DevelopmentConfig(BaseConfig): """开发环境配置""" # 报警内容 环境区分 ENV_TEXT = "开发环境" # 测试环境redis地址 REDIS_INFO = { 'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com', 'port': 6379, 'password': 'Wqsd@2019', } # Hologres连接参数,本地使用 HOLOGRES_INFO = { 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou.hologres.aliyuncs.com', 'port': 80, 'dbname': 'dssm', 'user': 'LTAI5tMPqPy9yboQAf1mBCCN', 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj' } # 测试环境mysql地址 MYSQL_INFO = { 'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com', 'port': 3306, 'user': 'wx2016_longvideo', 'password': 'wx2016_longvideoP@assword1234', 'db': 'longvideo', 'charset': 'utf8' } # Hologres视频状态存储表名 VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat' # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址 # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态 VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos' # 获取视频在流量池中的剩余可分发数接口地址 GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount' # 日志服务配置 ALIYUN_LOG = { 'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com', 'ACCESSID': 'LTAIWYUujJAm7CbH', 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P', 'PROJECT': 'rov-server-test', } class TestConfig(BaseConfig): """测试环境配置""" # 报警内容 环境区分 ENV_TEXT = "测试环境" # 测试环境redis地址 REDIS_INFO = { 'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com', 'port': 6379, 'password': 'Wqsd@2019', } # Hologres连接参数,服务器使用 HOLOGRES_INFO = { 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com', 'port': 80, 'dbname': 'dssm', 'user': 'LTAI5tMPqPy9yboQAf1mBCCN', 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj' } # 测试环境mysql地址 MYSQL_INFO = { 'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com', 'port': 3306, 'user': 'wx2016_longvideo', 'password': 'wx2016_longvideoP@assword1234', 'db': 'longvideo', 'charset': 'utf8' } # Hologres视频状态存储表名 VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat' # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址 # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态 VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos' # 获取视频在流量池中的剩余可分发数接口地址 GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount' # 日志服务配置 ALIYUN_LOG = { 'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com', 'ACCESSID': 'LTAIWYUujJAm7CbH', 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P', 'PROJECT': 'rov-server-test', } class PreProductionConfig(BaseConfig): """预发布环境配置""" # 报警内容 环境区分 ENV_TEXT = "预发布环境" # 线上环境redis地址 REDIS_INFO = { 'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com', 'port': 6379, 'password': 'Wqsd@2019', } # Hologres连接参数,服务器使用 HOLOGRES_INFO = { 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com', 'port': 80, 'dbname': 'dssm', 'user': 'LTAI5tMPqPy9yboQAf1mBCCN', 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj' } # 生产环境mysql地址 MYSQL_INFO = { 'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com', 'port': 3306, 'user': 'wx2016_longvideo', 'password': 'wx2016_longvideoP@assword1234', 'db': 'longvideo', 'charset': 'utf8' } # Hologres视频状态存储表名 VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat' # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址 # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态 VIDEO_FILTER_URL = 'http://prespeed-internal.piaoquantv.com/longvideoapi/openapi/recommend/filterVideos' # 获取视频在流量池中的剩余可分发数接口地址 GET_REMAIN_VIEW_COUNT_URL = 'http://preapi-internal.piaoquantv.com/flowpool/video/remainViewCount' # 日志服务配置 ALIYUN_LOG = { 'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com', 'ACCESSID': 'LTAIWYUujJAm7CbH', 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P', 'PROJECT': 'rov-server', } class ProductionConfig(BaseConfig): """生产环境配置""" # 报警内容 环境区分 ENV_TEXT = "生产环境" # 线上环境redis地址 REDIS_INFO = { 'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com', 'port': 6379, 'password': 'Wqsd@2019', } # Hologres连接参数,服务器使用 HOLOGRES_INFO = { 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com', 'port': 80, 'dbname': 'dssm', 'user': 'LTAI5tMPqPy9yboQAf1mBCCN', 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj' } # 生产环境mysql地址 MYSQL_INFO = { 'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com', 'port': 3306, 'user': 'wx2016_longvideo', 'password': 'wx2016_longvideoP@assword1234', 'db': 'longvideo', 'charset': 'utf8' } # Hologres视频状态存储表名 VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat' # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址 # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态 VIDEO_FILTER_URL = 'http://recommend-common-internal.piaoquantv.com/longvideoapi/openapi/recommend/filterVideos' # 获取视频在流量池中的剩余可分发数接口地址 GET_REMAIN_VIEW_COUNT_URL = 'http://api-internal.piaoquantv.com/flowpool/video/remainViewCount' # 日志服务配置 ALIYUN_LOG = { 'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com', 'ACCESSID': 'LTAIWYUujJAm7CbH', 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P', 'PROJECT': 'rov-server', } def set_config(): # 获取环境变量 ROV_SERVER_ENV env = os.environ.get('ROV_SERVER_ENV') # env = 'dev' if env is None: # log_.error('ENV ERROR: is None!') return if env == 'dev': return DevelopmentConfig() elif env == 'test': return TestConfig() elif env == 'pre': return PreProductionConfig() elif env == 'pro': return ProductionConfig() else: # log_.error('ENV ERROR: is {}'.format(env)) return