client/updater design: parallel downloads
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- python
- Domaine
- backend-api-design, security
Piste de recherche
Lisez d’abord les points d’entrée existants Updater.refresh(), Updater.get_valid_targetinfos(list) et Updater.download_targets(list), puis examinez le contexte des téléchargements parallèles de pip décrit dans l’issue. Définissez un périmètre concret pour l’API ou la concurrence, la tâche étant considérée comme terminée lorsque targets et les métadonnées bin peuvent être téléchargés en parallèle sans rendre dangereux l’état partagé de Updater.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Updater should in some way support parallel downloads.
This came up because I found an obscure corner in pip that does index file downloads in parallel in pip (pip list --outdated): if I plug my TUF-support in there, TUF Updater gets called from multiple threads and very bad things happen.
Some notes on this:
- for the pip use case, letting pip handle the actual downloads would remove 50% of the need for this -- but bin metadata downloads would still be sequential (and
Updater.refresh()would still be thread-unsafe) - Still, parallel downloads (for both targets and bin metadata) is probably a wanted feature in other user-facing apps as well: it is faster and is something package managers already often do
- this feature does not mean that TUF API absolutely needs to be threadsafe: many use cases would be covered by small API change:
Updater.get_valid_targetinfos(list)andUpdater.download_targets(list)could still be a single-threaded API but they could be implemented in a way that uses multiple threads and multiple connections to the server. I have no idea how easy this would be though. - The nicest solution might be a low-level Sans-IO style API (a state machine with events) or at least something that is asynchronous to the users. This API is then wrapped by a simple I/O layer that could look much like it now does. This would mean a large change.
- Langage dominant
- Python
- Étoiles
- 1.7k
- Forks
- 304
- Merge moyen
- 9 h 25 min
- PR mergées (30 j)
- 14
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de theupdateframework/python-tuf
-
switch to main branch?Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
theupdateframework/python-tuf#3001 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
theupdateframework/python-tuf#2979 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Use Immutable ReleasesOuverteenhancement github_actions
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
theupdateframework/python-tuf#2920 · 1 commentaire · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Investigate/test fetcher retriesOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
theupdateframework/python-tuf#2842 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
theupdateframework/python-tuf#2836 · 7 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de theupdateframework/python-tuf
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
Les mainteneurs répondent en général sous 1 jour
-
https://search.utilibre.orgOuverteinstance instance add
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
searxng/searx-instances#941 · 1 commentaire ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
FluidNumerics/fluid-walk-blocker#89 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour