smgc commited on
Commit
b047417
1 Parent(s): 568f598

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -7
app.py CHANGED
@@ -2,12 +2,11 @@ import os
2
  import json
3
  import uuid
4
  from datetime import datetime
5
- from flask import Flask, request, Response, jsonify, copy_current_request_context
6
  import socketio
7
  import requests
8
  import logging
9
  from threading import Event
10
- from functools import partial
11
 
12
  app = Flask(__name__)
13
  logging.basicConfig(level=logging.INFO)
@@ -123,7 +122,6 @@ def messages():
123
  yield create_event("content_block_start", {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}})
124
  yield create_event("ping", {"type": "ping"})
125
 
126
- @copy_current_request_context
127
  def on_connect():
128
  logging.info("Connected to Perplexity AI")
129
  sio.emit('perplexity_ask', previous_messages, {
@@ -143,8 +141,8 @@ def messages():
143
  "query_source": "home"
144
  })
145
 
146
- @copy_current_request_context
147
  def on_query_progress(data):
 
148
  if 'text' in data:
149
  text = json.loads(data['text'])
150
  chunk = text['chunks'][-1] if text['chunks'] else None
@@ -156,16 +154,13 @@ def messages():
156
  "delta": {"type": "text_delta", "text": chunk},
157
  })
158
 
159
- @copy_current_request_context
160
  def on_query_complete(data):
161
  response_event.set()
162
 
163
- @copy_current_request_context
164
  def on_disconnect():
165
  logging.info("Disconnected from Perplexity AI")
166
  response_event.set()
167
 
168
- @copy_current_request_context
169
  def on_connect_error(data):
170
  logging.error(f"Connection error: {data}")
171
  return create_event("content_block_delta", {
@@ -183,6 +178,18 @@ def messages():
183
  try:
184
  sio.connect('wss://www.perplexity.ai/', **connect_opts, headers=sio_opts['extraHeaders'])
185
  response_event.wait(timeout=30) # 等待响应,最多30秒
 
 
 
 
 
 
 
 
 
 
 
 
186
  except Exception as e:
187
  logging.error(f"Error during socket connection: {str(e)}")
188
  yield create_event("content_block_delta", {
 
2
  import json
3
  import uuid
4
  from datetime import datetime
5
+ from flask import Flask, request, Response, jsonify
6
  import socketio
7
  import requests
8
  import logging
9
  from threading import Event
 
10
 
11
  app = Flask(__name__)
12
  logging.basicConfig(level=logging.INFO)
 
122
  yield create_event("content_block_start", {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}})
123
  yield create_event("ping", {"type": "ping"})
124
 
 
125
  def on_connect():
126
  logging.info("Connected to Perplexity AI")
127
  sio.emit('perplexity_ask', previous_messages, {
 
141
  "query_source": "home"
142
  })
143
 
 
144
  def on_query_progress(data):
145
+ nonlocal response_text
146
  if 'text' in data:
147
  text = json.loads(data['text'])
148
  chunk = text['chunks'][-1] if text['chunks'] else None
 
154
  "delta": {"type": "text_delta", "text": chunk},
155
  })
156
 
 
157
  def on_query_complete(data):
158
  response_event.set()
159
 
 
160
  def on_disconnect():
161
  logging.info("Disconnected from Perplexity AI")
162
  response_event.set()
163
 
 
164
  def on_connect_error(data):
165
  logging.error(f"Connection error: {data}")
166
  return create_event("content_block_delta", {
 
178
  try:
179
  sio.connect('wss://www.perplexity.ai/', **connect_opts, headers=sio_opts['extraHeaders'])
180
  response_event.wait(timeout=30) # 等待响应,最多30秒
181
+
182
+ # 处理接收到的响应
183
+ while not response_event.is_set():
184
+ sio.sleep(0.1)
185
+ if response_text:
186
+ chunk = response_text.pop(0)
187
+ yield create_event("content_block_delta", {
188
+ "type": "content_block_delta",
189
+ "index": 0,
190
+ "delta": {"type": "text_delta", "text": chunk},
191
+ })
192
+
193
  except Exception as e:
194
  logging.error(f"Error during socket connection: {str(e)}")
195
  yield create_event("content_block_delta", {