Zenodo: مشروع الطالب: تحسين أداء تنزيل / تحميل الملفات الكبيرة عبر HTTP

تم إنشاؤها على ١٢ فبراير ٢٠١٦  ·  6تعليقات  ·  مصدر: zenodo/zenodo

حالة الاستخدام

  • أ) يريد الباحث تحميل مجموعة البيانات البحثية الخاصة به / بها والتي تبلغ 260 جيجابايت إلى Zenodo. الباحث لديه فقط متصفحه / متصفحها للقيام بالمهمة. التباين: يعرف الباحثون القليل من لغة Python ويمكنهم كتابة نص برمجي يقوم بتحميل ملف إلى Zenodo عبر API.
  • ب) يريد الباحث تنزيل مجموعة بيانات بحثية سعة 260 جيجابايت من Zenodo.

نحن نتحدث عن الملفات الكبيرة هنا (100 ميغابايت على الأقل ،

المرمى
تحسين أداء التحميل و / أو تنزيل البيانات إلى / من Zenodo.

تحميل
انقل البيانات من إلى Zenodo في أسرع وقت ممكن. باستخدام 1) JavaScript (متصفح) و / أو 2) Python (API).

_ جانب العميل_
JavaScript: ملف chunk (تدعم العديد من المكتبات الحالية هذا - على سبيل المثال PLUpload) ، قم بتحميل أجزاء متوازية (لم أر هذا في أي مكان - يمكن استخدام عمال الويب javascript على سبيل المثال).

Python: نفس الشيء مثل JavaScript - chunk / المتوازي + انظر إلى خط أنابيب HTTP وطبقة TCP أيضًا.

قضايا يجب مراعاتها:

  • سلامة الملف (كيف نتأكد من أن الملف الذي يمتلكه المستخدم هو بالضبط ما تم تحميله (المجموع الاختباري للملف ، ولكن إذا قمت بالتحميل بالتوازي ، يجب أن تدعمه خوارزمية المجموع الاختباري).
  • وقت الإستجابة
  • دعم المتصفح للميزات المستخدمة.

_ جانب الخادم_

  • نموذج العملية (منع / عدم حظر IO) - نحن نستخدم Gunicorn لتشغيل عمليات Python التي لها نماذج أحداث مختلفة.
  • تحليل الأداء على جانب الخادم (على سبيل المثال ، هل يمكن للخادم توجيه الملفات مباشرة إلى تخزين الملفات أو هل يحتاج إلى الاحتفاظ بالمقطع في الذاكرة).
  • كيف يمكننا زيادة عدد الاتصالات المتزامنة.

تحميل
المثال 1: مجموعة بيانات 260 جيجابايت في 1000 ملف. كيف يمكن للباحث تنزيل الملفات بسهولة دون الحاجة إلى النقر فوق 1000 رابط.
المثال الثاني: مجموعة بيانات 260 جيجا بايت في 4 ملفات. ماذا يحدث في حالة فقد الاتصال بالشبكة (أي التنزيلات القابلة للاستئناف).

_ جانب العميل_
ربما يكون من الممكن كتابة تطبيق JavaScript يمكنه المساعدة في تنزيل 1000 ملف. يمكن أن يساعد التطبيق نفسه في التنزيلات القابلة للاستئناف. مرة أخرى ، يمكن استخدام نموذج عامل الويب Javascript لتنزيل الملف على شكل أجزاء.

_ جانب الخادم_
تنفيذ الدعم لطلبات نطاق HTTP. مثل التحميل (نموذج العملية والتنزيلات المتزامنة). على سبيل المثال ، العملاء البطيئون الذين يستغرقون وقتًا طويلاً في تنزيل ملف سوف يملأ الخط.

خارج النطاق (لكن يجب مناقشته): طرق أخرى لتحسين تسليم الملفات مثل شبكات تسليم المحتوى.


سينتقل جزء Python بشكل أساسي إلى Inveniosoftware / Invenio-files-rest
ستكون أجزاء JavaScript مستودعات منفصلة.

التعليق الأكثر فائدة

هل هناك طريقة أفضل لتنزيل الملفات الكبيرة من استخدام متصفح إنترنت شائع؟ تميل الملفات الكبيرة التي تزيد عن http إلى الفشل في غضون ساعات ، ولا يمكن استئناف التنزيل.

في حالتي ، أحاول تنزيل مجموعة بيانات سعة 50 جيجابايت.
تبلغ سرعة التنزيل 500 كيلوبت في الثانية ويفشل الاتصال بين 12 ساعة التي يستمر فيها التنزيل.

لقد كنت أحاول تنزيله كل يوم منذ شهور (أحتاج إلى مجموعة البيانات لأطروحة الماجستير الخاصة بي).
أي اقتراحات؟

ال 6 كومينتر

آسف لإحياء هذه المشكلة القديمة في اتجاه خارج الموضوع إلى حد ما ... أود بشدة أن يدعم خادم Zenodo HTTP طلبات نطاق HTTP ، والتي تم ذكرها في التعليق الأصلي. بقدر ما أستطيع أن أقول ، لم يتم تكريمهم حاليًا. هل هذا على خريطة الطريق في الوقت الحالي؟

هل هناك طريقة أفضل لتنزيل الملفات الكبيرة من استخدام متصفح إنترنت شائع؟ تميل الملفات الكبيرة التي تزيد عن http إلى الفشل في غضون ساعات ، ولا يمكن استئناف التنزيل.

في حالتي ، أحاول تنزيل مجموعة بيانات سعة 50 جيجابايت.
تبلغ سرعة التنزيل 500 كيلوبت في الثانية ويفشل الاتصال بين 12 ساعة التي يستمر فيها التنزيل.

لقد كنت أحاول تنزيله كل يوم منذ شهور (أحتاج إلى مجموعة البيانات لأطروحة الماجستير الخاصة بي).
أي اقتراحات؟

لم أتمكن حتى من تنزيل مجموعة بيانات 2.2 جيجا بايت بعد 5 محاولات ، ولم يستطع مدير التنزيل مساعدتي أيضًا.

Vichoko ، هل تمكنت من حلها؟ اذا نعم فكيف

لقد شعرت أيضًا بالإحباط الشديد من محاولة تنزيل مجموعة بيانات تتضمن ملفين كبيرين (12 جيجابايت و 37 جيجابايت) لأيام وأيام.

لقد وجدت https://zenodo.org/record/1261813 (https://gitlab.com/dvolgyes/zenodo_get) وقد ساعد كثيرًا. تمكنت من تنزيل السجل بالكامل في المحاولة الأولى.
للوهلة الأولى ، لا أرى شيئًا سحريًا بشأنه ، لذلك أعتقد أن الحيلة يجب أن تكون في بعض العناصر الداخلية لتطبيق Python لـ wget .

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

يمكنني تنزيل ملفات 21 جيجابايت بشكل أسرع في عام 2006 باستخدام الطلب الهاتفي. هل تفتقر Zenodo إلى البنية التحتية لشبكة CDN؟ لماذا لا تستخدم دلو S3 أو GCS؟

أعتقد أنه يجب إعادة فتح هذه المشكلة ، نظرًا لأن Zenodo يعرض تنزيلات بطيئة وغير مستقرة بشكل غير طبيعي. أو إذا كانت هناك مشكلة أخرى لتتبع تنزيلات Zenodo؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات