Browse Source

Merge pull request #214 from ollama-webui/server-error-handling

feat: better error handling for ollama reverse proxy
Timothy Jaeryang Baek 1 năm trước cách đây
mục cha
commit
39bce7bd42
1 tập tin đã thay đổi với 26 bổ sung21 xóa
  1. 26 21
      backend/apps/ollama/main.py

+ 26 - 21
backend/apps/ollama/main.py

@@ -59,27 +59,32 @@ def proxy(path):
     else:
         pass
 
-    # Make a request to the target server
-    target_response = requests.request(
-        method=request.method,
-        url=target_url,
-        data=data,
-        headers=headers,
-        stream=True,  # Enable streaming for server-sent events
-    )
-
-    # Proxy the target server's response to the client
-    def generate():
-        for chunk in target_response.iter_content(chunk_size=8192):
-            yield chunk
-
-    response = Response(generate(), status=target_response.status_code)
-
-    # Copy headers from the target server's response to the client's response
-    for key, value in target_response.headers.items():
-        response.headers[key] = value
-
-    return response
+    try:
+        # Make a request to the target server
+        target_response = requests.request(
+            method=request.method,
+            url=target_url,
+            data=data,
+            headers=headers,
+            stream=True,  # Enable streaming for server-sent events
+        )
+
+        target_response.raise_for_status()
+
+        # Proxy the target server's response to the client
+        def generate():
+            for chunk in target_response.iter_content(chunk_size=8192):
+                yield chunk
+
+        response = Response(generate(), status=target_response.status_code)
+
+        # Copy headers from the target server's response to the client's response
+        for key, value in target_response.headers.items():
+            response.headers[key] = value
+
+        return response
+    except Exception as e:
+        return jsonify({"detail": "Server Connection Error", "message": str(e)}), 400
 
 
 if __name__ == "__main__":