Allow chunked uploads (and maybe even streaming uploads)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 50/100
Línea de trabajo
Comienza en dropbox_client.py alrededor de las líneas 533-539, donde los cuerpos de las solicitudes están restringidos a bytes, y compara ese comportamiento con la documentación enlazada de Requests sobre streaming y cargas fragmentadas. Determina cómo debería aceptar el SDK objetos similares a archivos o generadores, documentando también el comportamiento de los reintentos y el rebobinado; se considera terminado cuando las formas de carga elegidas son compatibles sin la restricción actual de solo bytes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Why is this feature valuable to you? Does it solve a problem you're having?
The requests library allows both streaming and chunked uploads (see https://requests.readthedocs.io/en/latest/user/advanced/#streaming-uploads and https://requests.readthedocs.io/en/latest/user/advanced/#chunk-encoded-requests). This has two benefits:
- It is sufficient to only load small parts of a file into memory before upload.
- It is possible to limit bandwidth usage by using a generator that provides chunks at a limited rate.
The Dropbox API of course already requires upload sessions (files/upload_session_start, files/upload_session_append and files/upload_session_finish) to upload files > 150 MB. However, this approach by itself does not replace chunked or streaming uploads because:
- The request body should be ideally >= 4 MB to reduce the total number of API calls (both for efficiency and to not exhaust data transport API call limits).
- Bandwidth control will be very coarse when performed on chunks of 4 MB compared for example 2 kB.
- Memory usage will still be larger compared to 1 kB or 2 kB chunks, especially for parallel uploads.
Describe the solution you'd like
Requests supports streaming uploads by passing a file-like object as the request body and chunked uploads by passing a generator as the request body. However, the Python SDK explicitly prevents both by requiring the request body to be of type bytes:
It would be good to either completely drop this limitation, with appropriate warnings in the doc string, or at least allow chunked uploads (where requests handles retry / rewind logic) even when disallowing streaming uploads.
Describe alternatives you've considered
Not at present.
- Lenguaje dominante
- Python
- Estrellas
- 983
- Forks
- 331
- Merge medio
- 3 min
- PR fusionados (30 d)
- 10
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dropbox/dropbox-sdk-python
-
question
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
dropbox/dropbox-sdk-python#585 · 4 comentarios ·
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
dropbox/dropbox-sdk-python#491 · 1 comentario ·
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
dropbox/dropbox-sdk-python#482 · 1 comentario · 2 reacciones ·
-
question
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
dropbox/dropbox-sdk-python#476 · 3 comentarios ·
-
bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
dropbox/dropbox-sdk-python#475 · 1 comentario ·
Todos los issues de dropbox/dropbox-sdk-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
anthropics/skills#1811 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
speaches-ai/speaches#678 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
datalayer/mcp-compose#42 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
conda-forge/spacy-feedstock#177 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
UKGovernmentBEIS/inspect_evals#2523 ·