http服务,异常导出接口

This commit is contained in:
Jerry Yan 2022-06-05 09:36:41 +08:00
parent 427f28bd57
commit c10b1e114d
3 changed files with 23 additions and 10 deletions

View File

@ -1,3 +1,11 @@
import time
from queue import SimpleQueue
MESSAGE_QUEUE = SimpleQueue()
MESSAGE_QUEUE: "SimpleQueue[MessagePayload]" = SimpleQueue()
class MessagePayload(object):
def __init__(self, body: bytes, timestamp: str = ""):
self.request_timestamp = timestamp
self.body = body
self.curretnt_timestamp = time.time()

View File

@ -1,5 +1,5 @@
from flask import Flask, request, Response
from handler.common import MESSAGE_QUEUE
from handler.common import MESSAGE_QUEUE, MessagePayload
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
@ -10,6 +10,6 @@ app.config['JSON_AS_ASCII'] = False
@app.post("/message")
def message_from_mitmproxy():
payload = request.data
payload = MessagePayload(request.data, request.headers.get("X-MITM-TS", ""))
MESSAGE_QUEUE.put(payload)
return Response(status=204)

View File

@ -16,18 +16,16 @@ from output import OUTPUTER
def loop_queue():
while True:
message = MESSAGE_QUEUE.get()
if type(message) == str:
message = message.encode("UTF-8")
try:
response = message_pb2.Response()
wss = wss_pb2.WssResponse()
wss.ParseFromString(message)
wss.ParseFromString(message.body)
decompressed = gzip.decompress(wss.data)
response.ParseFromString(decompressed)
decodeMsg(response.messages)
except Exception as e:
# 发出去的信息无法解析
pass
for output in OUTPUTER:
output.error_output("ParseError", message.body, e)
def decodeMsg(messages):
for message in messages:
@ -62,7 +60,14 @@ def decodeMsg(messages):
room_user_seq_message.set_payload(message.payload)
for output in OUTPUTER:
output.userseq_output(room_user_seq_message)
elif message.method == 'WebcastControlMessage':
control_message = ControlMessage()
control_message.set_payload(message.payload)
for output in OUTPUTER:
output.control_output(control_message)
else:
...
for output in OUTPUTER:
output.other_output(message.method, message.payload)
except Exception as e:
print(e)
for output in OUTPUTER:
output.error_output(message.method, message.payload, e)