Zenodo: Projet étudiant : Optimisation des performances de téléchargement/téléchargement de fichiers volumineux via HTTP

Créé le 12 févr. 2016  ·  6Commentaires  ·  Source: zenodo/zenodo

Cas d'utilisation

  • A) Un chercheur souhaite télécharger son ensemble de données de recherche de 260 Go sur Zenodo. Le chercheur n'est en possession que de son navigateur pour faire le travail. Variante : les chercheurs connaissent un peu Python et peuvent écrire un script qui télécharge un fichier sur Zenodo via l'API.
  • B) Un chercheur souhaite télécharger un ensemble de données de recherche de 260 Go à partir de Zenodo.

On parle ici de gros fichiers (minimum 100mb,

Objectif
Optimisez les performances de chargement et/ou de téléchargement de données vers/depuis Zenodo.

Télécharger
Déplacez les données de Zenodo aussi vite que possible. En utilisant 1) JavaScript (Navigateur) et/ou 2) Python (API).

_Côté client_
JavaScript : fichier de bloc (de nombreuses bibliothèques existantes le supportent - par exemple PLUpload), télécharger des blocs en parallèle (je n'ai jamais vu cela nulle part - pourrait utiliser par exemple des travailleurs Web javascript).

Python : Même chose que JavaScript - fragmenter/paralléliser + examiner également le pipeline HTTP et la couche TCP.

Problèmes à prendre en compte :

  • l'intégrité du fichier (comment pouvons-nous nous assurer que le fichier que l'utilisateur possède est exactement celui qui a été téléchargé (faites la somme de contrôle du fichier, mais si vous téléchargez en parallèle, votre algorithme de somme de contrôle devrait le prendre en charge).
  • latence
  • prise en charge du navigateur pour les fonctionnalités utilisées.

_Du côté serveur_

  • Modèle de processus (E/S bloquantes/non bloquantes) - nous utilisons Gunicorn pour exécuter nos processus Python qui ont différents modèles d'événements.
  • Analyse des performances côté serveur (par exemple, le serveur peut-il diriger les fichiers directement vers le stockage de fichiers ou doit-il conserver le morceau en mémoire).
  • Comment pouvons-nous augmenter le nombre de connexions simultanées.

Télécharger
Exemple 1 : ensemble de données de 260 Go dans 1 000 fichiers. Comment un chercheur peut-il télécharger facilement les fichiers sans avoir à cliquer sur 1000 liens.
Exemple 2 : ensemble de données de 260 Go dans 4 fichiers. Que se passe-t-il si la connectivité réseau est perdue (c'est-à-dire les téléchargements pouvant être repris).

_Côté client_
Peut-être possible d'écrire une application JavaScript qui peut aider à télécharger les 1000 fichiers. La même application pourrait aider avec les téléchargements pouvant être repris. Encore une fois, le modèle de travailleur Web Javascript pourrait éventuellement être utilisé pour télécharger le fichier en morceaux.

_Du côté serveur_
Implémenter la prise en charge des requêtes de plage HTTP. Comme le téléchargement (modèle de processus et téléchargements simultanés). Par exemple, les clients lents prenant du temps pour télécharger un fichier rempliront la ligne.

Hors champ d'application (mais doit être discuté) : autres méthodes pour optimiser la livraison de fichiers, telles que les réseaux de diffusion de contenu.


La partie Python ira principalement dans inveniosoftware/invenio-files-rest
Les parties JavaScript seront des référentiels séparés.

Commentaire le plus utile

Existe-t-il un meilleur moyen de télécharger de gros fichiers que d'utiliser un navigateur Internet commun ? Les gros fichiers sur http ont tendance à échouer en quelques heures et le téléchargement ne peut pas être repris.

Dans mon cas, j'essaie de télécharger un jeu de données de 50 Go.
La vitesse de téléchargement tourne autour de 500 Kbps et la connexion échoue entre les 12 heures que dure le téléchargement.

J'essaie de le télécharger tous les jours depuis des mois maintenant (j'ai besoin de l'ensemble de données pour ma thèse de maîtrise).
Aucune suggestion?

Tous les 6 commentaires

Désolé de ressusciter ce vieux problème dans une direction quelque peu hors sujet ... J'aimerais beaucoup que le serveur HTTP Zenodo prenne en charge les requêtes de plage HTTP, qui sont mentionnées dans le commentaire d'origine. Autant que je sache, ils ne sont pas honorés actuellement. Est-ce sur la feuille de route pour le moment ?

Existe-t-il un meilleur moyen de télécharger de gros fichiers que d'utiliser un navigateur Internet commun ? Les gros fichiers sur http ont tendance à échouer en quelques heures et le téléchargement ne peut pas être repris.

Dans mon cas, j'essaie de télécharger un jeu de données de 50 Go.
La vitesse de téléchargement tourne autour de 500 Kbps et la connexion échoue entre les 12 heures que dure le téléchargement.

J'essaie de le télécharger tous les jours depuis des mois maintenant (j'ai besoin de l'ensemble de données pour ma thèse de maîtrise).
Aucune suggestion?

Je n'ai même pas pu télécharger un ensemble de données de 2,2 Go après 5 essais, le gestionnaire de téléchargement n'a pas pu m'aider non plus.

@Vichoko , avez-vous réussi à le résoudre ? si oui, comment ?

Moi aussi, j'ai été très frustré d'essayer de télécharger un ensemble de données qui comprend deux gros fichiers (12 Go et 37 Go) pendant des jours et des jours.

J'ai trouvé https://zenodo.org/record/1261813 (https://gitlab.com/dvolgyes/zenodo_get) et cela m'a beaucoup aidé. J'ai réussi à télécharger l'intégralité de l'enregistrement du premier coup.
À première vue, je ne vois rien de magique à ce sujet, donc je suppose que l'astuce doit être dans certains des éléments internes de l'implémentation Python de wget .

Link: https://zenodo.org/api/files/cb4ca1fa-1db1-40f9-8f39-0e9d3b2af7ae/musdb18hq.zip   size: 21607.1 MB
  0% [                                             ]     3121152 / 22656664047

Je pouvais télécharger des fichiers de 21 Go plus rapidement en 2006 avec une connexion commutée. Est-ce que Zenodo manque d'infrastructure CDN ? Pourquoi ne pas utiliser un bucket S3 ou GCS ?

Je pense que ce problème devrait être rouvert, étant donné que Zenodo présente des téléchargements anormalement lents et instables. Ou s'il y a un autre problème pour suivre les téléchargements Zenodo ?

Cette page vous a été utile?
0 / 5 - 0 notes