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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -14
app.py CHANGED
@@ -2,11 +2,12 @@ import os
2
  import json
3
  import uuid
4
  from datetime import datetime
5
- from flask import Flask, request, Response, jsonify, current_app
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,8 +123,8 @@ def messages():
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
- @sio.event
126
- def connect():
127
  logging.info("Connected to Perplexity AI")
128
  sio.emit('perplexity_ask', previous_messages, {
129
  "version": "2.9",
@@ -142,37 +143,42 @@ def messages():
142
  "query_source": "home"
143
  })
144
 
145
- @sio.event
146
- def query_progress(data):
147
  if 'text' in data:
148
  text = json.loads(data['text'])
149
  chunk = text['chunks'][-1] if text['chunks'] else None
150
  if chunk:
151
  response_text.append(chunk)
152
- yield create_event("content_block_delta", {
153
  "type": "content_block_delta",
154
  "index": 0,
155
  "delta": {"type": "text_delta", "text": chunk},
156
  })
157
 
158
- @sio.event
159
- def query_complete(data):
160
  response_event.set()
161
 
162
- @sio.event
163
- def disconnect():
164
  logging.info("Disconnected from Perplexity AI")
165
  response_event.set()
166
 
167
- @sio.event
168
- def connect_error(data):
169
  logging.error(f"Connection error: {data}")
170
- yield create_event("content_block_delta", {
171
  "type": "content_block_delta",
172
  "index": 0,
173
  "delta": {"type": "text_delta", "text": f"Error connecting to Perplexity AI: {data}"},
174
  })
175
- response_event.set()
 
 
 
 
 
176
 
177
  try:
178
  sio.connect('wss://www.perplexity.ai/', **connect_opts, headers=sio_opts['extraHeaders'])
 
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
  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, {
130
  "version": "2.9",
 
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
151
  if chunk:
152
  response_text.append(chunk)
153
+ return create_event("content_block_delta", {
154
  "type": "content_block_delta",
155
  "index": 0,
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", {
172
  "type": "content_block_delta",
173
  "index": 0,
174
  "delta": {"type": "text_delta", "text": f"Error connecting to Perplexity AI: {data}"},
175
  })
176
+
177
+ sio.on('connect', on_connect)
178
+ sio.on('query_progress', on_query_progress)
179
+ sio.on('query_complete', on_query_complete)
180
+ sio.on('disconnect', on_disconnect)
181
+ sio.on('connect_error', on_connect_error)
182
 
183
  try:
184
  sio.connect('wss://www.perplexity.ai/', **connect_opts, headers=sio_opts['extraHeaders'])