সমান্তরাল উইজেট আছে? ফাইপিংয়ের মতো কিছু তবে কেবল ডাউনলোডের জন্য?


15

আমি কেবল পফ (সমান্তরাল ইউআরএল ফেচার) খুঁজে পেয়েছি তবে কোনও ফাইল থেকে ইউআরএল পড়তে পেলাম না; কিছুটা এইরকম

 puf < urls.txt

কাজ করে না।

সার্ভারে ইনস্টল করা অপারেটিং সিস্টেমটি হ'ল উবুন্টু।


এটি পাইথন এবং পাইকারল গ্রন্থাগার এবং স্ক্রিপ্টে কিছুটা আঠার যুক্তি দিয়ে করা যেতে পারে। তবে আমি এটির জন্য একটি "টিনজাত" সরঞ্জাম জানি না।
কিথ

@ কিথ কি কিছু অ্যা্যাসিঙ্ক লাইব্রেরিটি urllib এর সাথে উত্স হিসাবে ব্যবহার করার চেয়ে ভাল?
মুনওয়াককার

urllib তাত্পর্যপূর্ণভাবে ব্যবহার করার জন্য ডিজাইন করা হয়নি। Libcurl এর নিজস্ব async লুপ রয়েছে এবং "মাল্টি" ইন্টারফেসটি ব্যবহার করে কমপক্ষে 1000 একযোগে ফেচ করার জন্য সেট আপ করা যেতে পারে।
কিথ

@ কিথ আমি আপনার উত্তরটি সবচেয়ে পছন্দ করি তাই আপনি কি এর যথাযথ কৃতিত্ব গ্রহণের জন্য "সত্য" উত্তর হিসাবে লিখতে পারেন?
মুনওয়াক্কার

উত্তর:


25

জিএনইউ সমান্তরাল ব্যবহার করে ,

ralle সমান্তরাল -j $ {কাজগুলি} উইজেট <urls.txt

বা GNU Findutilsxargs থেকে ,

ar xargs -n 1 -P $ {কাজের} উইজেট <urls.txt

যেখানে ${jobs}সর্বোচ্চ সংখ্যা হয় wgetআপনি একই সময়ে চালানোর জন্য অনুমতি দিতে চান (সেটিং -nথেকে 1এক পেতে wgetমধ্যে প্রতি লাইনে আবাহন urls.txt)। -j/ ছাড়া -P, parallelসিপিইউ কোর হিসাবে একসাথে অনেকগুলি কাজ চালাবে (যা wgetনেটওয়ার্ক আইও দ্বারা আবদ্ধ হওয়ার প্রয়োজনীয়তা বোঝায় না ) এবং xargsএটি একবারে চালাবে।

এক চমৎকার বৈশিষ্ট্য যা parallelকরেছে ওভার xargsএকই সময়ে চলা কাজ আউটপুট রাখছে পৃথক, কিন্তু যদি আপনি যে যত্ন সম্পর্কে না, xargsপ্রাক ইনস্টল করার জন্য আরও সম্ভাবনা রয়েছে।


সর্বাপেক্ষা কাম্য jobsপথ লেটেন্সি পথ ব্যান্ডউইডথ, দূরবর্তী সার্ভারে নীতি, ইত্যাদি অনেক কারণের উপর নির্ভর করে
dhchdhd

6

এই উত্তরটি এমন একটি আসল উদাহরণ দিয়ে উন্নত হবে যা জিজ্ঞাসিত সমস্যা সমাধান করে, পরিবর্তে, এটি কেবলমাত্র লিঙ্ক-উত্তর হিসাবে যোগ্যতা অর্জন করে। meta.stackexchange.com/questions/225370/…
জেফ

2

আপনি পাইথন এবং পাইকারল লাইব্রেরি ব্যবহার করে এটি প্রয়োগ করতে পারেন। পাইকারল লাইব্রেরিতে "মাল্টি" ইন্টারফেস রয়েছে যা এর নিজস্ব এমনকি লুপ প্রয়োগ করে যা একসাথে একযোগে সংযোগ সক্ষম করে।

তবে ইন্টারফেসটি বরং সি-এর মতো এবং তাই অন্যান্য, আরও "পাইথোনিক" কোডের তুলনায় কিছুটা জটিল umbers

আমি এর জন্য একটি মোড়ক লিখেছিলাম যা এর উপরে আরও একটি সম্পূর্ণ ব্রাউজারের মতো ক্লায়েন্ট তৈরি করে। আপনি এটি উদাহরণ হিসাবে ব্যবহার করতে পারেন। দেখুন pycopia.WWW.client মডিউল। এইচটিটিপি সংযোগ ব্যবস্থাটি মাল্টি ইন্টারফেসটি মোড় করে।


2

এটি সঠিকভাবে সমন্বয় করে এবং স্থানীয় বা দূরবর্তী ডিওএস করবে না:

(bandwidth=5000 jobs=8; \
 parallel      \
   --round     \
   -P $jobs    \
   --nice +5   \
   --delay 2   \
   --pipepart  \
   --cat       \
   -a urls.txt \
     wget                                \
       --limit-rate=$((bandwidth/jobs))k \
       -w 1                              \
       -nv                               \
       -i {}                             \
)

1

জিএনইউ সমান্তরাল ম্যান পৃষ্ঠার অংশে একটি সমান্তরাল পুনরাবৃত্ত উইজেটের উদাহরণ রয়েছে।

https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer

এইচটিএমএল দু'বার ডাউনলোড হয়: একবার লিঙ্কগুলি বের করার জন্য এবং একবার ডিস্কে ডাউনলোড করার জন্য। অন্যান্য সামগ্রী কেবল একবার ডাউনলোড করা হয়।

আপনার যদি পুনরাবৃত্তির প্রয়োজন না হয় তবে পূর্বসূরীর উত্তরটি সুস্পষ্ট বলে মনে হচ্ছে।


এফআইআই মাত্র একটি দেরী যে কোনও সমান্তরাল প্লাস উইজেট "সমাধান" উভয়ই সহজাতভাবে অকার্যকর কারণ এটিতে সমস্ত মাল্টিপেজ ডাউনলোড করার কারণে ধীরে ধীরে বিষয়বস্তু দুটিবার ডাউনলোড করা দরকার এবং আপনি যে ব্যান্ডউইথের সমস্ত অপচয় করার জন্য অর্থ দিতে হয়েছিল তা ভোগ করতে খুব ভাল লাগেনি কারণ আপনি করেন নি একটি দক্ষ সমাধান ব্যবহার করবেন না।
dhchdhd

0

আপনার প্যারালেল ডাউনলোডের ক্ষতিগ্রস্থ ব্যক্তিরা আনন্দিত হবে না: তারা প্রতিটি ক্লায়েন্টকে পরিবেশন করার জন্য একটি সংযোগ আশা করে, বেশ কয়েকটি সংযোগ স্থাপনের অর্থ সামগ্রিকভাবে কম ক্লায়েন্ট। (অর্থাৎ এটিকে অভদ্র আচরণ হিসাবে বিবেচনা করা হয়)।


1
তবে তিনি বিভিন্ন সার্ভার থেকে ফাইলগুলি ডাউনলোড করছেন, তাই এটি প্রযোজ্য হবে না।
রেনান

@ ভনব্র্যান্ড যা বলেছে তা ছাড়াও আপনি "অনেক সংযোগ" এর মতো কিছু পেতে পারেন এবং সমস্ত ফাইল ডাউনলোড করতে সক্ষম হবেন না। এবং এটি কিছুটা ধীর হতে পারে (উদাহরণস্বরূপ, বেশ কয়েকটি HTTP সংযোগ তৈরি করার তুলনায় একটি HTTP সংযোগ পুনরায় ব্যবহার করা)
golimar

2
আপনি যতক্ষণ এই সংখ্যাটি বুদ্ধিমান রাখবেন, এটি কোনও বড় বিষয় নয়। উদাহরণস্বরূপ, আপনি যখন এটি লিখেছিলেন, ফায়ারফক্স ক্রমাগত সংযোগগুলি ব্যবহার না করার সময় সার্ভারে 15 টি সংযোগ ব্যবহার করছিল (তারা কেবলমাত্র অবিচ্ছিন্ন সংযোগগুলি চেষ্টা করে চলেছে যা সার্ভারে 6 টির মধ্যে সীমাবদ্ধ)। অন্যান্য ব্রাউজারগুলি একই সংখ্যা ব্যবহার করে।
ডারোবার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.