Отправка прогресса загрузки в режиме реального времени через веб-сокет FastAPIPython

Программы на Python
Ответить
Anonymous
 Отправка прогресса загрузки в режиме реального времени через веб-сокет FastAPI

Сообщение Anonymous »

Я создаю серверную часть с помощью FastAPI, в которой планирую получать большие файлы от клиента на сервере, а затем отправлять их в Discord.
Мне нужно что-то вроде того, когда пользователь загружает данные, которые я хочу показать в реальном времени, но мне трудно это сделать, поэтому я могу добиться чего-то вроде
Когда пользователь загружает файл, он обновляет пользователя после каждого фрагмента отправляется в дискорд, но не в реальном времени
Этот прогресс может быть любым.
  • от пользователя к серверу
  • с сервера в дискорд
Если одно из этих двух можно достичь. Это сработает

Код: Выделить всё

while True:
try:
chunk = await file.read(CHUNK_SIZE)
if not chunk:
break
chunk_id += 1
total_size += len(chunk)
message_id = await bot.upload_chunk(chunk, file.filename, chunk_id)
try:
await manager.send_message(f"Uploaded {total_size} bytes")
except Exception as e:
# logging.error(f"Failed to send WebSocket message: {e}")
print(f"Failed to send WebSocket message: {e}")

chunk_entry = FileChunk(
file_name=file.filename,
chunk_id=chunk_id,
discord_message_id=message_id,
folder_id=folder_id
)
db.add(chunk_entry)
uploaded_chunks.append(chunk_entry)
except Exception as e:
raise HTTPException(status_code=500, detail=f"Error uploading chunk {chunk_id}: {str(e)}")

await db.commit()
try:
await manager.send_message("Upload complete")
except Exception as e:
# logging.error(f"Failed to send WebSocket completion message: {e}")
print(f"Failed to send WebSocket completion message: {e}")
return {
"message": "File uploaded successfully",
"filename": file.filename,
"chunks": chunk_id
}
Вот фрагмент кода, который может вам помочь.

Подробнее здесь: https://stackoverflow.com/questions/792 ... et-fastapi
Ответить

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

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

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

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

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