From da8bfd20920a4a7f207a4918550d1b7fa9af0418 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 25 Dec 2019 13:50:01 +0800 Subject: [PATCH] 1 --- .gitignore | 1 + tools/rankserver/delrank.py | 101 +++++++++++++++++++++++++++++ tools/rankserver/delrank_cmd.py | 110 ++++++++++++++++++++++++++++++++ 3 files changed, 212 insertions(+) create mode 100644 tools/rankserver/delrank.py create mode 100644 tools/rankserver/delrank_cmd.py diff --git a/.gitignore b/.gitignore index a7ae74b..1e7a0b2 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ *.tar.gz target config/ +__pycache__/ \ No newline at end of file diff --git a/tools/rankserver/delrank.py b/tools/rankserver/delrank.py new file mode 100644 index 0000000..40d730e --- /dev/null +++ b/tools/rankserver/delrank.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +#!/usr/bin/python + +import pymysql +import hashlib +import json +import urllib.request +import base64 +import tornado.ioloop +import tornado.web +import time +import datetime +import redis +import os +import functools +import delrank_cmd +import sys + +CONFIG_DIR = '' + +def IsOnlineEnv(): + return os.getenv("SERVER_ENV"); + +if (IsOnlineEnv()): + CONFIG_DIR = '/var/data/conf_test/game2003api_rankserver/config' +else: + CONFIG_DIR = '../config' + +def info(msg): + print(str(datetime.datetime.now()) + '[INFO] ' + msg) + +def getRedis(): + redis_conf = json.loadsmysql_conf = json.loads(open(CONFIG_DIR + '/rankserver.redis.cluster.json', 'r').read()) + for conf in redis_conf: + r = redis.Redis(host = conf['host'], + port = conf['port'], + password = conf['passwd'], + charset = 'utf8' + ) + return r; + +#字符串排序 +def customCmp(a, b): + if len(a[4]) < len(b[4]): + return -1 + elif len(a[4]) > len(b[4]): + return 1 + #endif + if a[4] < b[4]: + return -1 + elif a[4] > b[4]: + return 1 + else: + return + +#删除排行榜数据 +def delMysqlData(): + pass_list = [] + coin_list = [] + r = getRedis() + updateRank(r, pass_list, coin_list) + +#更新排行榜 +def updateRank(r, pass_list, coin_list): + pass_list.sort(key=take_pass, reverse=True) + pass_rank = [] + for pass_index in range(min(50, len(pass_list))): + pass_rank.append(pass_list[pass_index]) + r.set("game2003api:pass_rank", json.dumps(pass_rank)) + + coin = sorted(coin_list, key=functools.cmp_to_key(customCmp), reverse = True) + coin_rank = [] + for coin_index in range(min(50, len(coin))): + coin_rank.append(coin[coin_index]) + r.set("game2003api:coin_rank", json.dumps(coin_rank)) + +class SelfCheckingHandler(tornado.web.RequestHandler): + + def get(self): + self.write(json.dumps({ + 'errcode': 0, + 'errmsg': '', + 'healthy': 1, + 'max_rundelay': 10 + })) + +def make_app(): + return tornado.web.Application([ + (r"/webapp/index[\.]php", SelfCheckingHandler), + ]) + +if __name__ == "__main__": + conf = json.loads(open(CONFIG_DIR + '/rankserver.json', 'r').read()) + redis_cluster = json.loads(open(CONFIG_DIR + '/rankserver.redis.cluster.json', 'r').read()) + mysql_cluster = json.loads(open(CONFIG_DIR + '/rankserver.mysql.cluster.json', 'r').read()) + if len(sys.argv) <= 1: + app = make_app() + app.listen(conf['listen_port']) + delMysqlData() + else: + delrank_cmd.processCmdLine(sys.argv[1], redis_cluster, mysql_cluster) diff --git a/tools/rankserver/delrank_cmd.py b/tools/rankserver/delrank_cmd.py new file mode 100644 index 0000000..71d2c9a --- /dev/null +++ b/tools/rankserver/delrank_cmd.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +#!/usr/bin/python + +import pymysql +import hashlib +import json +import urllib.request +import base64 +import tornado.ioloop +import tornado.web +import time +import datetime +import redis +import os +import functools + +CONFIG_DIR = '' + +def take_pass(elem): + return elem[3] + +def safeDiv(a, b): + if b == 0: + return 0 + else: + return a / b + +def IsOnlineEnv(): + return os.getenv("SERVER_ENV"); + +if (IsOnlineEnv()): + CONFIG_DIR = '/var/data/conf_test/game2003api_rankserver/config' +else: + CONFIG_DIR = '../config' + +def info(msg): + print(str(datetime.datetime.now()) + '[INFO] ' + msg) + +def getRedis(): + redis_conf = json.loadsmysql_conf = json.loads(open(CONFIG_DIR + '/rankserver.redis.cluster.json', 'r').read()) + for conf in redis_conf: + r = redis.Redis(host = conf['host'], + port = conf['port'], + password = conf['passwd'], + charset = 'utf8' + ) + return r; + +#字符串排序 +def customCmp(a, b): + if len(a[4]) < len(b[4]): + return -1 + elif len(a[4]) > len(b[4]): + return 1 + #endif + if a[4] < b[4]: + return -1 + elif a[4] > b[4]: + return 1 + else: + return + +#删除排行榜数据 +def delMysqlData(): + pass_list = [] + coin_list = [] + r = getRedis() + updateRank(r, pass_list, coin_list) + +class SelfCheckingHandler(tornado.web.RequestHandler): + + def get(self): + self.write(json.dumps({ + 'errcode': 0, + 'errmsg': '', + 'healthy': 1, + 'max_rundelay': 10 + })) + +def _crcDel_cmd(): + pass_list = [] + coin_list = [] + r = getRedis() + updateRank(r, pass_list, coin_list) + +def updateRank(r, pass_list, coin_list): + pass_list.sort(key=take_pass, reverse=True) + pass_rank = [] + for pass_index in range(min(50, len(pass_list))): + pass_rank.append(pass_list[pass_index]) + r.set("game2003api:pass_rank", json.dumps(pass_rank)) + + coin = sorted(coin_list, key=functools.cmp_to_key(customCmp), reverse = True) + coin_rank = [] + for coin_index in range(min(50, len(coin))): + coin_rank.append(coin[coin_index]) + r.set("game2003api:coin_rank", json.dumps(coin_rank)) + +def processCmdLine(cmd, redis_cluster, mysql_cluster): + precmd_hash = { + 'crcDel': _crcDel_cmd + } + print('ok') + if cmd in precmd_hash: + precmd_hash[cmd]() + +def make_app(): + return tornado.web.Application([ + (r"/webapp/index[\.]php", SelfCheckingHandler), + ])