diff --git a/new-bing/EdgeGPT.py b/new-bing/EdgeGPT.py index bce0ed6..f230476 100644 --- a/new-bing/EdgeGPT.py +++ b/new-bing/EdgeGPT.py @@ -255,7 +255,7 @@ class ChatHub: extra_headers=HEADERS, max_size=None, ssl=ssl_context, - open_timeout=30, + open_timeout=45, ) await self.__initial_handshake() # Construct a ChatHub request diff --git a/new-bing/app.py b/new-bing/app.py index ba1f62d..016eb8b 100644 --- a/new-bing/app.py +++ b/new-bing/app.py @@ -56,23 +56,41 @@ async def ws_chat(request, ws): logger.warn('Receive data: %s', data) sid = data['sid'] q = data['q'] - async for response in get_bot(sid).ask_stream(q, conversation_style=ConversationStyle.creative): - final, res = response - if final: - processed_data = await process_data(res, q, sid, auto_reset=1) - if processed_data['data']['status'] == 'Throttled': - reset_cookie() - await get_bot(sid).reset() - processed_data['data']['suggests'].append(q) - await ws.send(raw_json.dumps({ - 'final': final, - 'data': processed_data - })) - else: - await ws.send(raw_json.dumps({ - 'final': final, - 'data': res - })) + try: + async for response in get_bot(sid).ask_stream(q, conversation_style=ConversationStyle.creative): + final, res = response + if final: + processed_data = await process_data(res, q, sid, auto_reset=1) + if processed_data['data']['status'] == 'Throttled': + reset_cookie() + await get_bot(sid).reset() + processed_data['data']['suggests'].append(q) + await ws.send(raw_json.dumps({ + 'final': final, + 'data': processed_data + })) + else: + await ws.send(raw_json.dumps({ + 'final': final, + 'data': res + })) + except Exception as e: + logger.error(e) + await ws.send( + raw_json.dumps({ + 'final': True, + 'data': { + 'data': { + 'status': 'Error', + 'text': str(e), + 'suggests': [q], + 'message': str(e), + 'num_in_conversation': -1, + }, + 'cookie': os.environ.get('COOKIE_FILE'), + } + }) + ) def get_bot(sid):