smgc commited on
Commit
0e13636
1 Parent(s): 36752d5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -19
app.py CHANGED
@@ -6,9 +6,9 @@ from flask import Flask, request, Response, jsonify
6
  import socketio
7
  import requests
8
  import logging
 
9
  from threading import Event
10
  import re
11
- import traceback # 用于捕获详细的堆栈信息
12
 
13
  app = Flask(__name__)
14
  logging.basicConfig(level=logging.INFO)
@@ -49,12 +49,15 @@ sio_opts = {
49
  }
50
  }
51
 
52
- def log_request(ip, route, status):
53
  """
54
- 记录请求的关键信息:IP地址、路由、状态码。
55
  """
56
  timestamp = datetime.now().isoformat()
57
- logging.info(f"{timestamp} - {ip} - {route} - {status}")
 
 
 
58
 
59
  def validate_api_key():
60
  api_key = request.headers.get('x-api-key')
@@ -124,13 +127,11 @@ def messages():
124
  return auth_error
125
 
126
  try:
127
- json_body = request.json
128
-
129
- # 检查请求数据是否过大
130
- request_size = len(json.dumps(json_body))
131
- if request_size > 1 * 1024 * 1024: # 超过 1MB 的请求大小
132
- logging.warning(f"Request size is too large: {request_size / 1024:.2f} KB")
133
 
 
134
  model = json_body.get('model', 'claude-3-opus-20240229') # 动态获取模型,默认 claude-3-opus-20240229
135
  stream = json_body.get('stream', True) # 默认为True
136
 
@@ -148,9 +149,6 @@ def messages():
148
  # 处理 stream 为 false 的情况
149
  return handle_non_stream(previous_messages, msg_id, model, input_tokens)
150
 
151
- # 记录请求的关键信息:IP地址、路由、状态码
152
- log_request(request.remote_addr, request.path, 200)
153
-
154
  def generate():
155
  yield create_event("message_start", {
156
  "type": "message_start",
@@ -230,9 +228,7 @@ def messages():
230
  })
231
 
232
  except Exception as e:
233
- # 捕获并记录详细的堆栈信息
234
  logging.error(f"Error during WebSocket communication: {str(e)}")
235
- logging.error(traceback.format_exc()) # 输出堆栈信息
236
  yield create_event("content_block_delta", {
237
  "type": "content_block_delta",
238
  "index": 0,
@@ -256,9 +252,9 @@ def messages():
256
  return Response(generate(), content_type='text/event-stream')
257
 
258
  except Exception as e:
259
- # 捕获并记录详细的堆栈信息
260
  logging.error(f"Request error: {str(e)}")
261
- logging.error(traceback.format_exc()) # 输出堆栈信息
262
  log_request(request.remote_addr, request.path, 400)
263
  return jsonify({"error": str(e)}), 400
264
 
@@ -339,10 +335,11 @@ def handle_non_stream(previous_messages, msg_id, model, input_tokens):
339
  return Response(json.dumps(full_response, ensure_ascii=False), content_type='application/json')
340
 
341
  except Exception as e:
342
- # 捕获并记录详细的堆栈信息
343
  logging.error(f"Request error: {str(e)}")
344
- logging.error(traceback.format_exc()) # 输出堆栈信息
345
  return jsonify({"error": str(e)}), 500
 
346
  finally:
347
  if sio.connected:
348
  sio.disconnect()
@@ -355,6 +352,8 @@ def not_found(error):
355
  @app.errorhandler(500)
356
  def server_error(error):
357
  logging.error(f"Server error: {str(error)}")
 
 
358
  log_request(request.remote_addr, request.path, 500)
359
  return "Something broke!", 500
360
 
 
6
  import socketio
7
  import requests
8
  import logging
9
+ import traceback
10
  from threading import Event
11
  import re
 
12
 
13
  app = Flask(__name__)
14
  logging.basicConfig(level=logging.INFO)
 
49
  }
50
  }
51
 
52
+ def log_request(ip, route, status, data_size=None):
53
  """
54
+ 记录请求的关键信息:IP地址、路由、状态码,以及请求数据大小(如果提供)。
55
  """
56
  timestamp = datetime.now().isoformat()
57
+ log_message = f"{timestamp} - {ip} - {route} - {status}"
58
+ if data_size is not None:
59
+ log_message += f" - Data size: {data_size} bytes"
60
+ logging.info(log_message)
61
 
62
  def validate_api_key():
63
  api_key = request.headers.get('x-api-key')
 
127
  return auth_error
128
 
129
  try:
130
+ # 记录请求数据大小
131
+ data_size = len(request.data)
132
+ log_request(request.remote_addr, request.path, 200, data_size)
 
 
 
133
 
134
+ json_body = request.json
135
  model = json_body.get('model', 'claude-3-opus-20240229') # 动态获取模型,默认 claude-3-opus-20240229
136
  stream = json_body.get('stream', True) # 默认为True
137
 
 
149
  # 处理 stream 为 false 的情况
150
  return handle_non_stream(previous_messages, msg_id, model, input_tokens)
151
 
 
 
 
152
  def generate():
153
  yield create_event("message_start", {
154
  "type": "message_start",
 
228
  })
229
 
230
  except Exception as e:
 
231
  logging.error(f"Error during WebSocket communication: {str(e)}")
 
232
  yield create_event("content_block_delta", {
233
  "type": "content_block_delta",
234
  "index": 0,
 
252
  return Response(generate(), content_type='text/event-stream')
253
 
254
  except Exception as e:
255
+ # 记录详细的错误堆栈信息
256
  logging.error(f"Request error: {str(e)}")
257
+ logging.error(traceback.format_exc()) # 记录堆栈信息
258
  log_request(request.remote_addr, request.path, 400)
259
  return jsonify({"error": str(e)}), 400
260
 
 
335
  return Response(json.dumps(full_response, ensure_ascii=False), content_type='application/json')
336
 
337
  except Exception as e:
338
+ # 记录详细的错误堆栈信息
339
  logging.error(f"Request error: {str(e)}")
340
+ logging.error(traceback.format_exc()) # 记录堆栈信息
341
  return jsonify({"error": str(e)}), 500
342
+
343
  finally:
344
  if sio.connected:
345
  sio.disconnect()
 
352
  @app.errorhandler(500)
353
  def server_error(error):
354
  logging.error(f"Server error: {str(error)}")
355
+ # 记录详细的错误堆栈信息
356
+ logging.error(traceback.format_exc()) # 记录堆栈信息
357
  log_request(request.remote_addr, request.path, 500)
358
  return "Something broke!", 500
359