-
Notifications
You must be signed in to change notification settings - Fork 1
/
server.py
99 lines (82 loc) · 2.95 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: leeyoshinari
import os
import asyncio
import traceback
from aiohttp import web
from common import get_ip, logger, get_config
from taskController import Task
HOST = get_ip()
task = Task()
PID = os.getpid()
with open('pid', 'w', encoding='utf-8') as f:
f.write(str(PID))
async def index(request):
"""
Home, basic data can be displayed by visiting http://ip:port
:param request:
:return:
"""
return web.Response(body=f'The server system version is')
async def run_task(request):
"""
:param request:
:return:
"""
try:
if task.status > 0:
return web.json_response({'code': 1, 'msg': f'Host {task.IP} is busy ~', 'data': None})
data = await request.json()
task.start_thread(task.run_task, (data,))
return web.json_response({'code': 0, 'msg': '', 'data': None})
except Exception as err:
logger.error(traceback.format_exc())
return web.json_response({'code': 1, 'msg': str(err), 'data': None})
async def download_file(request):
"""
Get the list of monitoring ports
:param request:
:return:
"""
task_id = request.match_info['task_id']
# res = task.download_log(task_id)
return web.Response(content_type='application/octet-stream', headers={'Content-Disposition': f'attachment;filename={task_id}.zip'}, body=task.download_log(task_id))
async def change_tps(request):
"""
:param request:
:return:
"""
try:
data = await request.json()
# task_id = data.get('taskId')
tps = data.get('tps')
# res = task.change_TPS(tps)
task.start_thread(task.change_TPS, (tps,))
return web.json_response({'code': 0, 'msg': 'Change TPS successful ~'})
except Exception:
logger.error(traceback.format_exc())
return web.json_response({'code': 1, 'msg': 'Change TPS failure ~'})
async def stop_task(request):
try:
# task_id = request.match_info['task_id']
# task.start_thread(task.stop_task, ())
task.set_status = 0
return web.json_response({'code': 0, 'msg': 'Stop the Task successfully', 'data': None})
except:
logger.error(traceback.format_exc())
return web.json_response({'code': 1, 'msg': 'Stop the Task failure', 'data': None})
async def main():
app = web.Application()
app.router.add_route('GET', '/', index)
app.router.add_route('GET', '/stopTask/{task_id}', stop_task)
app.router.add_route('POST', '/runTask', run_task)
app.router.add_route('POST', '/change', change_tps)
app.router.add_route('GET', '/download/{task_id}', download_file)
runner = web.AppRunner(app)
await runner.setup()
site = web.TCPSite(runner, HOST, get_config('port'))
await site.start()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.run_forever()