POST /upload_df HTTP/1.1" 405 Ошибка метода не разрешенаPython

Программы на Python
Ответить
Anonymous
 POST /upload_df HTTP/1.1" 405 Ошибка метода не разрешена

Сообщение Anonymous »

Используя инфраструктуру FastAPI, я написал программу, которая принимает живое видео с веб-камеры и показывает его во внешнем интерфейсе с помощью функции image_feed. Каждый кадр обрабатывается функцией, а именноprocess_image(img, Scale=0.35). С помощью этой функции он обновляет глобальный фрейм данных df.
Когда этот процесс завершается, прямая трансляция останавливается, задавая state.live = False. Затем функция вызывает /upload_df, которая должна преобразовать df в таблицу HTML и отобразить ее во внешнем интерфейсе HTML. (С помощью команды печати я проверил успешность преобразования таблицы HTML).
Однако программа не отображает df во внешнем интерфейсе. Вместо этого отображается следующее сообщение об ошибке:
"INFO: 127.0.0.1:1527 - "POST /upload_df HTTP/1.1" 405 Метод не разрешен
Запрос к /upload_df: {'detail': 'Метод не разрешен'}"
Что происходит и как это исправить? Я использую pycharm в Windows.
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
html_file = "upload11.html"

class FeedState:
live = True # If True, stream live video; if False, show last processed frame
last_processed_frame = None # Store the last processed image
lock = Lock() # To ensure thread safety when accessing the state

state = FeedState()

df = pd.DataFrame(columns=["A", "B", "TF \n(+ve)","TF \n(-ve)","QA \n(+ve)","QA \n(-ve)"])

def process_image(img, scale=0.35):
global df
#
with state.lock:
state.live = False

try:
print("Video feed stopped. Now calling upload_df function")
response = requests.post("http://127.0.0.1:8000/upload_df")
print("Request to /upload_df:", response.json())
except Exception as e:
print("Error sending POST request to /upload_df:", e)
return

@app.get("/upload_df", response_class=HTMLResponse)
async def upload_df(request: Request):
global df
# Convert DataFrame to HTML with styling
df_html = df.to_html(classes="table table-bordered", escape=False)
return templates.TemplateResponse(html_file, {"request": request, "df_html": df_html})

@app.get("/image_feed")
def image_feed():
def generate_images():
cap = cv2.VideoCapture(0) # Open the default webcam
if not cap.isOpened():
raise RuntimeError("Could not access the webcam.")
ret, last_img = cap.read()

while True:
if state.live:
ret, img = cap.read()
last_img=process_image(img)
_, buffer = cv2.imencode(".jpg", last_img)
frame_bytes = buffer.tobytes()
yield (
b"--frame\r\n"
b"Content-Type: image/jpeg\r\n\r\n" + frame_bytes + b"\r\n")

return StreamingResponse(generate_images(), media_type="multipart/x-mixed-replace; boundary=frame")

@app.get("/", response_class=HTMLResponse)
async def read_root():
return templates.TemplateResponse(html_file, {"request": {}})

def open_browser():
webbrowser.open("http://127.0.0.1:8000")

if __name__ == "__main__":
# Run the browser-opening function in a separate thread
threading.Thread(target=open_browser).start()
# Start the Uvicorn server
uvicorn.run("webInterface11:app", host="127.0.0.1", port=8000, reload=True)


Подробнее здесь: https://stackoverflow.com/questions/793 ... owed-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»