add
This commit is contained in:
commit
584c32ad47
2
.gitignore
vendored
2
.gitignore
vendored
@ -9,6 +9,7 @@ __pycache__/
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
.idea
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
@ -278,3 +279,4 @@ dmypy.json
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
.vscode/settings.json
|
||||
|
2
main.py
2
main.py
@ -89,11 +89,9 @@ def get_query(background_tasks: BackgroundTasks, q: Optional[str] = None):
|
||||
|
||||
@app.post("/send-notification/{email}")
|
||||
async def send_notification(request: Request, email: str, background_tasks: BackgroundTasks, q: str = Depends(get_query)):
|
||||
# pdb.set_trace()
|
||||
redis_client = request.app.state.redis
|
||||
keys = await redis_client.get("online_devices")
|
||||
logger.info("get keys = {}".format(keys))
|
||||
# print(keys)
|
||||
message = f"message to {email} \n"
|
||||
background_tasks.add_task(write_log, message)
|
||||
return {"message": "Message sent"}
|
||||
|
@ -19,3 +19,10 @@ async def change_worldboss(request: Request, serverid: int, values: int) -> JSON
|
||||
wj = WjtxTools()
|
||||
await wj.change_worldboss(serverid, values)
|
||||
return JSONResponse(status_code=200, content={"message": "change {0} worldboss to {1}!".format(serverid, values)})
|
||||
|
||||
|
||||
@router.get("/stop_serivce", tags=["wjtx"], summary="stop wjtx service")
|
||||
async def stop_service(request: Request, serverid: int) -> JSONResponse:
|
||||
wj = WjtxTools()
|
||||
await wj.stop_service(serverid)
|
||||
return JSONResponse(status_code=200, content={"message": "stop {0} services!".format(serverid)})
|
||||
|
@ -4,4 +4,8 @@ fastapi-mail==0.3.7
|
||||
GitPython==3.1.18
|
||||
pydantic==1.8.2
|
||||
redis==3.2.1
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
uvicorn==0.15.0
|
||||
>>>>>>> a89138ebdb67e404f724e5ee425cc5c49664498c
|
||||
|
@ -86,7 +86,9 @@ class WjtxTools:
|
||||
return False
|
||||
|
||||
def _restart_service(self):
|
||||
global_redis = redis.Redis(host=self.redis_conf['host'], port=self.redis_conf['port'], charset='utf8',
|
||||
global_redis = redis.Redis(host=self.redis_conf['host'],
|
||||
port=self.redis_conf['port'],
|
||||
charset='utf8',
|
||||
db=self.redis_conf.get('db') or 0)
|
||||
host_info = json.loads(global_redis.hget('game_info', self.serverid))
|
||||
hostip = host_info.get('innerIp', None)
|
||||
@ -109,7 +111,9 @@ class WjtxTools:
|
||||
return False
|
||||
|
||||
def check_serverid(self):
|
||||
global_redis = redis.Redis(host=self.redis_conf['host'], port=self.redis_conf['port'], charset='utf8',
|
||||
global_redis = redis.Redis(host=self.redis_conf['host'],
|
||||
port=self.redis_conf['port'],
|
||||
charset='utf8',
|
||||
db=self.redis_conf.get('db') or 0)
|
||||
server_state = global_redis.hget('server_state', self.serverid)
|
||||
if int(server_state) != 12:
|
||||
@ -128,3 +132,52 @@ class WjtxTools:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
async def _get_alive_host(self) -> list:
|
||||
alive_serverids = list()
|
||||
global_redis = redis.Redis(host=self.redis_conf['host'],
|
||||
port=self.redis_conf['port'],
|
||||
charset='utf8',
|
||||
db=self.redis_conf.get('db') or 0)
|
||||
|
||||
data = global_redis.hgetall('game_info')
|
||||
for line in data.values():
|
||||
recode = json.loads(line)
|
||||
# all_serverids.append(recode['areaId'])
|
||||
if (int(recode['areaId']) % 100 + 9000) == int(
|
||||
recode['tcpPort']) and recode['status'] == 1:
|
||||
alive_serverids.append(recode['areaId'])
|
||||
all_serverids = list(set(alive_serverids))
|
||||
return all_serverids.sort()
|
||||
|
||||
def _get_hostip_via_serverid(self, serverids) -> list:
|
||||
global_redis = redis.Redis(host=self.redis_conf['host'],
|
||||
port=self.redis_conf['port'],
|
||||
charset='utf8',
|
||||
db=self.redis_conf.get('db') or 0)
|
||||
all_hosts = list()
|
||||
for serverid in serverids:
|
||||
hostip = json.loads(global_redis.hget('game_info', serverid)).get(
|
||||
'innerIp', None)
|
||||
if hostip:
|
||||
all_hosts.append(hostip)
|
||||
return all_hosts
|
||||
|
||||
async def stop_service(self, serverids: list) -> bool:
|
||||
if not serverids:
|
||||
all_services = await self._get_alive_host()
|
||||
else:
|
||||
all_services = serverids
|
||||
hosts = self._get_hostip_via_serverid(all_services)
|
||||
hostfilename = write_host(hosts)
|
||||
stop_cmd = "/usr/bin/pkill java"
|
||||
time.sleep(1)
|
||||
myansible = AnsiInterface(hostfilename)
|
||||
resule = myansible.exec_command(stop_cmd)
|
||||
log.debug(resule)
|
||||
if not (resule['failed'] or resule['unreachable']):
|
||||
log.info(f"stop {self.serverid} success!")
|
||||
return True
|
||||
else:
|
||||
log.error(f"stop {self.serverid} failed,output was {resule}")
|
||||
return False
|
||||
|
Loading…
x
Reference in New Issue
Block a user