wangwei0 commited on
Commit
5a6683b
1 Parent(s): 99f4cd1

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +26 -70
main.py CHANGED
@@ -1,5 +1,5 @@
1
  import gevent.pywsgi
2
- from gevent import monkey; monkey.patch_all()
3
  from flask import Flask, request, Response, jsonify
4
  import argparse
5
  import requests
@@ -18,7 +18,6 @@ parser.add_argument("--port", type=int, help="Set the port.(default: 7860)", def
18
  args = parser.parse_args()
19
 
20
  base_url = os.getenv('MODEL_BASE_URL')
21
- streaming_enabled = os.getenv('STREAMING_ENABLED', 'false').lower() == 'true'
22
 
23
  @app.route('/api/v1/models', methods=["GET", "POST"])
24
  @app.route('/v1/models', methods=["GET", "POST"])
@@ -102,78 +101,34 @@ def chat_completions():
102
  "session_hash": session_hash,
103
  }
104
 
105
- if streaming_enabled:
106
- def generate():
107
- response = requests.post(f"{base_url}/queue/join", json=json_prompt)
108
- url = f"{base_url}/queue/data?session_hash={session_hash}"
109
- data = requests.get(url, stream=True)
110
-
111
- time_now = int(time.time())
112
-
113
- for line in data.iter_lines():
114
- if line:
115
- decoded_line = line.decode("utf-8")
116
- json_line = json.loads(decoded_line[6:])
117
- if json_line["msg"] == "process_starts":
118
- res_data = gen_res_data({}, time_now=time_now, start=True)
119
- yield f"data: {json.dumps(res_data)}\n\n"
120
- elif json_line["msg"] == "process_generating":
121
- res_data = gen_res_data(json_line, time_now=time_now)
122
- yield f"data: {json.dumps(res_data)}\n\n"
123
- elif json_line["msg"] == "process_completed":
124
- yield "data: [DONE]"
125
-
126
- return Response(
127
- generate(),
128
- mimetype="text/event-stream",
129
- headers={
130
- "Access-Control-Allow-Origin": "*",
131
- "Access-Control-Allow-Headers": "*",
132
- },
133
- )
134
- else:
135
  response = requests.post(f"{base_url}/queue/join", json=json_prompt)
136
  url = f"{base_url}/queue/data?session_hash={session_hash}"
137
- data_stream = requests.get(url, stream=True)
138
 
139
  time_now = int(time.time())
140
- collected_data = []
141
-
142
- try:
143
- for line in data_stream.iter_lines():
144
- if line:
145
- try:
146
- decoded_line = line.decode("utf-8")
147
- json_line = json.loads(decoded_line[6:]) # 确保这里的切片索引是正确的
148
- collected_data.append(json_line)
149
- if json_line.get("msg") == "process_completed":
150
- break
151
- except json.JSONDecodeError:
152
- print("Error decoding JSON from response")
153
- continue # 跳过不能解码的行
154
-
155
- if not collected_data:
156
- return jsonify({"error": "No data received from the server", "word_count": 0})
157
-
158
- # 检查数据是否有效并尝试生成最终响应
159
- try:
160
- res_data = gen_res_data(collected_data[-1], time_now=time_now) if collected_data else {"error": "No valid data processed", "word_count": 0}
161
- print("Response data:", res_data) # 打印输出res_data
162
- except KeyError as e:
163
- res_data = {"error": f"Missing key in data: {str(e)}", "word_count": 0}
164
- print("KeyError:", res_data) # 错误情况下也打印res_data
165
- except IndexError as e:
166
- res_data = {"error": f"Index error in data: {str(e)}", "word_count": 0}
167
- print("IndexError:", res_data)
168
- except Exception as e:
169
- res_data = {"error": f"An unexpected error occurred: {str(e)}", "word_count": 0}
170
- print("Exception:", res_data)
171
-
172
- except Exception as e:
173
- res_data = {"error": f"An error occurred while processing stream: {str(e)}", "word_count": 0}
174
- print("Stream processing exception:", res_data)
175
-
176
- return jsonify(res_data)
177
 
178
 
179
  def gen_res_data(data, time_now=0, start=False):
@@ -197,4 +152,5 @@ def gen_res_data(data, time_now=0, start=False):
197
 
198
 
199
  if __name__ == "__main__":
 
200
  gevent.pywsgi.WSGIServer((args.host, args.port), app).serve_forever()
 
1
  import gevent.pywsgi
2
+ from gevent import monkey;monkey.patch_all()
3
  from flask import Flask, request, Response, jsonify
4
  import argparse
5
  import requests
 
18
  args = parser.parse_args()
19
 
20
  base_url = os.getenv('MODEL_BASE_URL')
 
21
 
22
  @app.route('/api/v1/models', methods=["GET", "POST"])
23
  @app.route('/v1/models', methods=["GET", "POST"])
 
101
  "session_hash": session_hash,
102
  }
103
 
104
+ def generate():
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  response = requests.post(f"{base_url}/queue/join", json=json_prompt)
106
  url = f"{base_url}/queue/data?session_hash={session_hash}"
107
+ data = requests.get(url, stream=True)
108
 
109
  time_now = int(time.time())
110
+
111
+ for line in data.iter_lines():
112
+ if line:
113
+ decoded_line = line.decode("utf-8")
114
+ json_line = json.loads(decoded_line[6:])
115
+ if json_line["msg"] == "process_starts":
116
+ res_data = gen_res_data({}, time_now=time_now, start=True)
117
+ yield f"data: {json.dumps(res_data)}\n\n"
118
+ elif json_line["msg"] == "process_generating":
119
+ res_data = gen_res_data(json_line, time_now=time_now)
120
+ yield f"data: {json.dumps(res_data)}\n\n"
121
+ elif json_line["msg"] == "process_completed":
122
+ yield "data: [DONE]"
123
+
124
+ return Response(
125
+ generate(),
126
+ mimetype="text/event-stream",
127
+ headers={
128
+ "Access-Control-Allow-Origin": "*",
129
+ "Access-Control-Allow-Headers": "*",
130
+ },
131
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
 
133
 
134
  def gen_res_data(data, time_now=0, start=False):
 
152
 
153
 
154
  if __name__ == "__main__":
155
+ # app.run(host=args.host, port=args.port, debug=True)
156
  gevent.pywsgi.WSGIServer((args.host, args.port), app).serve_forever()