game2003api/tools/rankserver/rankserver_cmd.py
2020-01-10 14:36:14 +08:00

77 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
#!/usr/bin/python
import sys
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 game2003rank
def scanRedisKey(conn, pattern):
result = {}
cursor, keys = conn.scan(0, pattern, 1000)
while cursor != 0 or len(keys) > 0:
for key in keys:
if key in result:
result[key] += result[key]
else:
result[key] = 0
keys = []
if cursor != 0:
cursor, keys = conn.scan(cursor, pattern, 1000)
return result
def _updateRank_cmd(debug_info):
game2003rank.internalDayReadMysqlData()
def _clearRank_cmd(debug_info):
for conf in game2003rank.getRedisConf():
r = redis.Redis(host = conf['host'],
port = conf['port'],
password = conf['passwd'],
charset = 'utf8'
)
pass_list = []
scan_keys = scanRedisKey(r, "game2003api:pass_rank_*")
for key in scan_keys :
r.set(key, json.dumps(pass_list))
def processCmdLine(cmd):
cmd_hash = {
'updateRank': _updateRank_cmd,
'clearRank': _clearRank_cmd,
}
precmd_hash = {
}
postcmd_hash = {
}
debug_info = {
'record_count': 0,
'param1': 0,
'param2': 0,
'param3': 0,
'param4': 0
}
if cmd in precmd_hash:
precmd_hash[cmd](debug_info)
if cmd in cmd_hash:
cmd_hash[cmd](debug_info)
if cmd in postcmd_hash:
postcmd_hash[cmd](debug_info)
if __name__ == "__main__":
if len(sys.argv) <= 1:
pass
else:
processCmdLine(sys.argv[1])