khoipm08 commited on
Commit
1f6f5cc
·
1 Parent(s): 5cc8bc6

Fix streaming

Browse files
Files changed (1) hide show
  1. app.py +15 -7
app.py CHANGED
@@ -1,4 +1,4 @@
1
- from flask import Flask, request, Response, stream_with_context
2
  import requests
3
  import os
4
 
@@ -6,16 +6,24 @@ app = Flask(__name__)
6
 
7
  OLLAMA_API_URL = "http://localhost:11434"
8
 
9
- @stream_with_context
10
  def generate(data):
11
- with requests.post(f"{OLLAMA_API_URL}/api/chat", json=data, stream=True) as r:
12
- for line in r.iter_lines(decode_unicode=True):
13
- yield line
 
 
 
 
 
 
14
 
15
  @app.route('/chat', methods=['POST'])
16
  def chat():
17
  data = request.get_json(silent=True)
18
- return Response(generate(data), mimetype='text/plain')
 
 
 
19
 
20
  @app.route('/embed', methods=['POST'])
21
  def embed():
@@ -25,4 +33,4 @@ def embed():
25
 
26
  if __name__ == '__main__':
27
  port = int(os.environ.get('PORT', 7860))
28
- app.run(host='0.0.0.0', port=port, debug=False)
 
1
+ from flask import Flask, request, Response
2
  import requests
3
  import os
4
 
 
6
 
7
  OLLAMA_API_URL = "http://localhost:11434"
8
 
 
9
  def generate(data):
10
+ try:
11
+ with requests.post(f"{OLLAMA_API_URL}/api/chat", json=data, stream=True) as r:
12
+ r.raise_for_status() # Raise an exception for bad status codes
13
+ for line in r.iter_lines():
14
+ if line:
15
+ yield line.decode('utf-8') + '\n'
16
+ except Exception as e:
17
+ # Yield an error message if something goes wrong
18
+ yield f'{{"error": "Stream error: {str(e)}"}}\n'
19
 
20
  @app.route('/chat', methods=['POST'])
21
  def chat():
22
  data = request.get_json(silent=True)
23
+ response = Response(generate(data), mimetype='text/plain')
24
+ response.headers['Cache-Control'] = 'no-cache'
25
+ response.headers['X-Accel-Buffering'] = 'no' # Disable buffering in nginx
26
+ return response
27
 
28
  @app.route('/embed', methods=['POST'])
29
  def embed():
 
33
 
34
  if __name__ == '__main__':
35
  port = int(os.environ.get('PORT', 7860))
36
+ app.run(host='0.0.0.0', port=port, debug=False, threaded=True)