smgc commited on
Commit
548cbf7
1 Parent(s): 6f0edbd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -36
app.py CHANGED
@@ -6,15 +6,10 @@ from flask import Flask, request, Response, jsonify
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
-
15
- # 设置 Flask 的 MAX_CONTENT_LENGTH,防止请求数据过大导致 Flask 抛出 413 错误
16
- app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 设置为 16MB
17
-
18
  logging.basicConfig(level=logging.INFO)
19
 
20
  # 从环境变量中获取API密钥
@@ -34,8 +29,7 @@ if proxy_url:
34
  else:
35
  transport = None
36
 
37
- # 禁用 socketio engineio 的详细日志
38
- sio = socketio.Client(http_session=transport, logger=False, engineio_logger=False)
39
 
40
  # 连接选项
41
  connect_opts = {
@@ -53,15 +47,9 @@ sio_opts = {
53
  }
54
  }
55
 
56
- def log_request(ip, route, status, data_size=None):
57
- """
58
- 记录请求的关键信息:IP地址、路由、状态码,以及请求数据大小(如果提供)。
59
- """
60
  timestamp = datetime.now().isoformat()
61
- log_message = f"{timestamp} - {ip} - {route} - {status}"
62
- if data_size is not None:
63
- log_message += f" - Data size: {data_size} bytes"
64
- logging.info(log_message)
65
 
66
  def validate_api_key():
67
  api_key = request.headers.get('x-api-key')
@@ -131,10 +119,6 @@ def messages():
131
  return auth_error
132
 
133
  try:
134
- # 记录请求数据大小
135
- data_size = len(request.data)
136
- log_request(request.remote_addr, request.path, 200, data_size)
137
-
138
  json_body = request.json
139
  model = json_body.get('model', 'claude-3-opus-20240229') # 动态获取模型,默认 claude-3-opus-20240229
140
  stream = json_body.get('stream', True) # 默认为True
@@ -153,6 +137,9 @@ def messages():
153
  # 处理 stream 为 false 的情况
154
  return handle_non_stream(previous_messages, msg_id, model, input_tokens)
155
 
 
 
 
156
  def generate():
157
  yield create_event("message_start", {
158
  "type": "message_start",
@@ -171,7 +158,7 @@ def messages():
171
  yield create_event("ping", {"type": "ping"})
172
 
173
  def on_connect():
174
- logging.info("WebSocket connected to Perplexity AI")
175
  emit_data = {
176
  "version": "2.9",
177
  "source": "default",
@@ -204,11 +191,11 @@ def messages():
204
  response_event.set()
205
 
206
  def on_disconnect():
207
- logging.info("WebSocket disconnected from Perplexity AI")
208
  response_event.set()
209
 
210
  def on_connect_error(data):
211
- logging.error(f"WebSocket connection error: {data}")
212
  response_text.append(f"Error connecting to Perplexity AI: {data}")
213
  response_event.set()
214
 
@@ -232,12 +219,11 @@ def messages():
232
  })
233
 
234
  except Exception as e:
235
- logging.error(f"Error during WebSocket communication: {str(e)}")
236
- logging.error(traceback.format_exc()) # 记录详细的堆栈信息
237
  yield create_event("content_block_delta", {
238
  "type": "content_block_delta",
239
  "index": 0,
240
- "delta": {"type": "text_delta", "text": f"Error during WebSocket communication: {str(e)}"},
241
  })
242
  finally:
243
  if sio.connected:
@@ -257,9 +243,7 @@ def messages():
257
  return Response(generate(), content_type='text/event-stream')
258
 
259
  except Exception as e:
260
- # 记录详细的错误堆栈信息
261
  logging.error(f"Request error: {str(e)}")
262
- logging.error(traceback.format_exc()) # 记录堆栈信息
263
  log_request(request.remote_addr, request.path, 400)
264
  return jsonify({"error": str(e)}), 400
265
 
@@ -272,7 +256,7 @@ def handle_non_stream(previous_messages, msg_id, model, input_tokens):
272
  response_text = []
273
 
274
  def on_connect():
275
- logging.info("WebSocket connected to Perplexity AI")
276
  emit_data = {
277
  "version": "2.9",
278
  "source": "default",
@@ -302,11 +286,11 @@ def handle_non_stream(previous_messages, msg_id, model, input_tokens):
302
  response_event.set()
303
 
304
  def on_disconnect():
305
- logging.info("WebSocket disconnected from Perplexity AI")
306
  response_event.set()
307
 
308
  def on_connect_error(data):
309
- logging.error(f"WebSocket connection error: {data}")
310
  response_text.append(f"Error connecting to Perplexity AI: {data}")
311
  response_event.set()
312
 
@@ -340,11 +324,8 @@ def handle_non_stream(previous_messages, msg_id, model, input_tokens):
340
  return Response(json.dumps(full_response, ensure_ascii=False), content_type='application/json')
341
 
342
  except Exception as e:
343
- # 记录详细的错误堆栈信息
344
- logging.error(f"Request error: {str(e)}")
345
- logging.error(traceback.format_exc()) # 记录堆栈信息
346
  return jsonify({"error": str(e)}), 500
347
-
348
  finally:
349
  if sio.connected:
350
  sio.disconnect()
@@ -357,8 +338,6 @@ def not_found(error):
357
  @app.errorhandler(500)
358
  def server_error(error):
359
  logging.error(f"Server error: {str(error)}")
360
- # 记录详细的错误堆栈信息
361
- logging.error(traceback.format_exc()) # 记录堆栈信息
362
  log_request(request.remote_addr, request.path, 500)
363
  return "Something broke!", 500
364
 
 
6
  import socketio
7
  import requests
8
  import logging
 
9
  from threading import Event
10
  import re
11
 
12
  app = Flask(__name__)
 
 
 
 
13
  logging.basicConfig(level=logging.INFO)
14
 
15
  # 从环境变量中获取API密钥
 
29
  else:
30
  transport = None
31
 
32
+ sio = socketio.Client(http_session=transport, logger=True, engineio_logger=True)
 
33
 
34
  # 连接选项
35
  connect_opts = {
 
47
  }
48
  }
49
 
50
+ def log_request(ip, route, status):
 
 
 
51
  timestamp = datetime.now().isoformat()
52
+ logging.info(f"{timestamp} - {ip} - {route} - {status}")
 
 
 
53
 
54
  def validate_api_key():
55
  api_key = request.headers.get('x-api-key')
 
119
  return auth_error
120
 
121
  try:
 
 
 
 
122
  json_body = request.json
123
  model = json_body.get('model', 'claude-3-opus-20240229') # 动态获取模型,默认 claude-3-opus-20240229
124
  stream = json_body.get('stream', True) # 默认为True
 
137
  # 处理 stream 为 false 的情况
138
  return handle_non_stream(previous_messages, msg_id, model, input_tokens)
139
 
140
+ # 记录日志:此时请求上下文仍然有效
141
+ log_request(request.remote_addr, request.path, 200)
142
+
143
  def generate():
144
  yield create_event("message_start", {
145
  "type": "message_start",
 
158
  yield create_event("ping", {"type": "ping"})
159
 
160
  def on_connect():
161
+ logging.info("Connected to Perplexity AI")
162
  emit_data = {
163
  "version": "2.9",
164
  "source": "default",
 
191
  response_event.set()
192
 
193
  def on_disconnect():
194
+ logging.info("Disconnected from Perplexity AI")
195
  response_event.set()
196
 
197
  def on_connect_error(data):
198
+ logging.error(f"Connection error: {data}")
199
  response_text.append(f"Error connecting to Perplexity AI: {data}")
200
  response_event.set()
201
 
 
219
  })
220
 
221
  except Exception as e:
222
+ logging.error(f"Error during socket connection: {str(e)}")
 
223
  yield create_event("content_block_delta", {
224
  "type": "content_block_delta",
225
  "index": 0,
226
+ "delta": {"type": "text_delta", "text": f"Error during socket connection: {str(e)}"},
227
  })
228
  finally:
229
  if sio.connected:
 
243
  return Response(generate(), content_type='text/event-stream')
244
 
245
  except Exception as e:
 
246
  logging.error(f"Request error: {str(e)}")
 
247
  log_request(request.remote_addr, request.path, 400)
248
  return jsonify({"error": str(e)}), 400
249
 
 
256
  response_text = []
257
 
258
  def on_connect():
259
+ logging.info("Connected to Perplexity AI")
260
  emit_data = {
261
  "version": "2.9",
262
  "source": "default",
 
286
  response_event.set()
287
 
288
  def on_disconnect():
289
+ logging.info("Disconnected from Perplexity AI")
290
  response_event.set()
291
 
292
  def on_connect_error(data):
293
+ logging.error(f"Connection error: {data}")
294
  response_text.append(f"Error connecting to Perplexity AI: {data}")
295
  response_event.set()
296
 
 
324
  return Response(json.dumps(full_response, ensure_ascii=False), content_type='application/json')
325
 
326
  except Exception as e:
327
+ logging.error(f"Error during socket connection: {str(e)}")
 
 
328
  return jsonify({"error": str(e)}), 500
 
329
  finally:
330
  if sio.connected:
331
  sio.disconnect()
 
338
  @app.errorhandler(500)
339
  def server_error(error):
340
  logging.error(f"Server error: {str(error)}")
 
 
341
  log_request(request.remote_addr, request.path, 500)
342
  return "Something broke!", 500
343