Операция ввода-вывода в закрытом файле при потоковой передаче ответа от FastapiPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Операция ввода-вывода в закрытом файле при потоковой передаче ответа от Fastapi

Сообщение Anonymous »

Я пытаюсь передать клиенту ответ с процентом выполнения после обработки каждого файла в приведенном ниже коде, однако вижу ошибку ввода-вывода в закрытом файле для каждого из файлов.< /p>
Ответ, полученный от сервера:
data: {"progress": 0}

data: {"error": "Error processing file: I/O operation on closed file."}

data: {"error": "Error processing file: I/O operation on closed file."}

data: {"progress": 100}

Мой пример
@app.post("/test-streaming")
async def upload_file_streaming(files: list[UploadFile]):
return StreamingResponse(
stream_response(files),
media_type="text/event-stream"
)

async def extract(files) -> AsyncGenerator[str, None]:
total_files = len(files)
for index, file in enumerate(files):
try:
with pdfplumber.open(file.file) as pdf:
# Simulate processing each page of the PDF
for page in pdf.pages:
text = page.extract_text() # Replace with actual processing logic
await asyncio.sleep(0.5) # Simulate processing delay

# Calculate and yield progress
progress = int(((index + 1) / total_files) * 100)

yield f"data: {{\"progress\": {progress}}}\n\n"

except Exception as e:
yield f"data: {{\"error\": \"Error processing file: {str(e)}\"}}\n\n"

async def stream_response(files: list[UploadFile]) -> AsyncGenerator[str, None]:
yield "data: {\"progress\": 0}\n\n" # Initial progress
async for update in extract(files):
yield update
yield "data: {\"progress\": 100}\n\n"

Я даже пытался прочитать весь файл в памяти, выполнив указанные ниже действия, однако вижу ту же ошибку
pdf_bytes = await file.read()
with pdfplumber.open(io.BytesIO(pdf_bytes)) as pdf:..


Подробнее здесь: https://stackoverflow.com/questions/793 ... om-fastapi
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Операция ввода-вывода в закрытом файле при потоковой передаче ответа от FastAPI
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Python/Flask – ValueError: операция ввода-вывода в закрытом файле
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Python/Flask – ValueError: операция ввода-вывода в закрытом файле
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • ValueError: операция ввода/вывода в закрытом файле
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • ValueError: операция ввода/вывода в закрытом файле
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

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