Мне нужно что-то вроде того, когда пользователь загружает данные, которые я хочу показать в реальном времени, но мне трудно это сделать, поэтому я могу добиться чего-то вроде
Когда пользователь загружает файл, он обновляет пользователя после каждого фрагмента отправляется в дискорд, но не в реальном времени
Этот прогресс может быть любым.
- от пользователя к серверу
- с сервера в дискорд
Код: Выделить всё
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
Мобильная версия