def pvp_top_rank_request_1501(data, player): response = pvp_rank_pb2.PlayerRankResponse() columns = ['id', 'nickname', 'level', 'ap', 'hero_ids'] records = util.GetSomeRecordInfo(PVP_TABLE_NAME, 'id<=10', columns) for record in records: rank_item = response.rank_items.add() rank_item.level = record.get('level') rank_item.nickname = record.get('nickname') rank_item.rank = record.get('id') rank_item.ap = record.get('ap') hero_ids = cPickle.loads(record.get('hero_ids')) rank_item.hero_ids.extend([_ for _ in hero_ids]) return response.SerializeToString()
def pvp_player_rank_refresh_request(data, player): response = pvp_rank_pb2.PlayerRankResponse() prere = dict(character_id=player.base_info.id) record = util.GetOneRecordInfo(PVP_TABLE_NAME, prere, ['id']) if not record: cur_rank = 300 else: cur_rank = record.get('id') ranks = [] for v in arena_fight_config.values(): play_rank = v.get('play_rank') if cur_rank in range(play_rank[0], play_rank[1] + 1): para = dict(k=cur_rank) choose_fields = eval(v.get('choose'), para) logger.info('cur:%s choose:%s', cur_rank, choose_fields) for x, y, c in choose_fields: for _ in range(c): r = random.randint(int(x), int(y)) ranks.append(r) break if not ranks: raise Exception('rank field error!') caret = ',' prere = 'id in (%s)' % caret.join(str(_) for _ in ranks) logger.info('prere:%s', prere) columns = ['id', 'nickname', 'level', 'ap', 'hero_ids'] records = util.GetSomeRecordInfo(PVP_TABLE_NAME, prere, columns) for record in records: rank_item = response.rank_items.add() rank_item.level = record.get('level') rank_item.nickname = record.get('nickname') rank_item.rank = record.get('id') rank_item.ap = record.get('ap') hero_ids = cPickle.loads(record.get('hero_ids')) rank_item.hero_ids.extend([_ for _ in hero_ids]) return response.SerializeToString()
def pvp_player_rank_request_1502(data, player): response = pvp_rank_pb2.PlayerRankResponse() prere = dict(character_id=player.base_info.id) record = util.GetOneRecordInfo(PVP_TABLE_NAME, prere, ['id']) if not record: return pvp_player_rank_refresh_request(data, player) cur_rank = record.get('id') columns = ['id', 'nickname', 'level', 'ap', 'hero_ids'] prere = 'id>=%s and id<=%s' % (cur_rank - 9, cur_rank + 1) records = util.GetSomeRecordInfo(PVP_TABLE_NAME, prere, columns) for record in records: rank_item = response.rank_items.add() rank_item.level = record.get('level') rank_item.nickname = record.get('nickname') rank_item.rank = record.get('id') rank_item.ap = record.get('ap') hero_ids = cPickle.loads(record.get('hero_ids')) rank_item.hero_ids.extend([_ for _ in hero_ids]) return response.SerializeToString()
def dbpool_get(): result = util.GetSomeRecordInfo(PVP_TABLE_NAME, 'id<10', ['id', 'nickname', 'level', 'units']) print len(result)
for i in range(10): dbpool_get() print 'end get db' if __name__ == '': log_init_only_out() hostname = "127.0.0.1" user = "******" password = "******" port = 8066 dbname = "db_traversing" charset = "utf8" dbpool.initPool(host=hostname, user=user, passwd=password, port=port, db=dbname, charset=charset) records = util.GetSomeRecordInfo(PVP_TABLE_NAME, 'id=10', ['id', 'nickname', 'level', 'units']) for r in records: # u = cPickle.loads(u) print r.get('nickname'), r.get('level'), r.get('id') # r.get('units') import gevent thread1 = gevent.spawn(test_db) thread2 = gevent.spawn(test_db) gevent.joinall([thread1, thread2])