Spaces:
Sleeping
Sleeping
File size: 1,959 Bytes
401927c 99db2c0 401927c 99db2c0 ce9f2e2 b5adad5 198c437 b5adad5 198c437 b5adad5 198c437 b5adad5 198c437 401927c 99db2c0 198c437 2874038 198c437 2874038 198c437 2874038 198c437 401927c ce9f2e2 401927c ce9f2e2 401927c ce9f2e2 401927c ce9f2e2 401927c ce9f2e2 401927c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | import threading
import time
import requests
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import gradio as gr
import uvicorn
app = FastAPI()
class Numbers(BaseModel):
x: float
y: float
@app.post("/add")
def add_numbers_api(numbers: Numbers):
return {"result": add_numbers(numbers.x, numbers.y)}
@app.post("/subtract")
def subtract_numbers_api(numbers: Numbers):
return {"result": subtract_numbers(numbers.x, numbers.y)}
@app.post("/multiply")
def multiply_numbers_api(numbers: Numbers):
return {"result": multiply_numbers(numbers.x, numbers.y)}
@app.post("/divide")
def divide_numbers_api(numbers: Numbers):
if numbers.y == 0:
raise HTTPException(status_code=400, detail="Cannot divide by zero")
return {"result": divide_numbers(numbers.x, numbers.y)}
def add_numbers(x: float, y: float) -> float:
return x + y
def subtract_numbers(x: float, y: float) -> float:
return x - y
def multiply_numbers(x: float, y: float) -> float:
return x * y
def divide_numbers(x: float, y: float) -> float:
return x / y
def run_fastapi():
uvicorn.run(app, host="127.0.0.1", port=8000)
thread = threading.Thread(target=run_fastapi, daemon=True)
thread.start()
BASE_URL = "http://127.0.0.1:8000"
def perform_operation(operation: str, x: float, y: float) -> str:
try:
url = f"{BASE_URL}/{operation}"
response = requests.post(url, json={"x": x, "y": y})
response.raise_for_status()
result = response.json().get("result")
return str(result)
except requests.exceptions.HTTPError as err:
return f"Error: {err.response.json().get('detail')}"
iface = gr.Interface(
fn=perform_operation,
inputs=[
gr.Radio(choices=["add", "subtract", "multiply", "divide"], label="Operation"),
gr.Number(label="X"),
gr.Number(label="Y")
],
outputs="text",
live=False
)
time.sleep(1)
iface.launch()
|