Instagram හි හෑෂ්ටැග් හෝ පරිශීලක නාමයන්ගෙන් දත්ත එකතු කිරීම, අන්තර්ජාල මාර්ගයෙන් කරනු ලබන විට, එක් එක් ඉල්ලීමකට අර්ධ-තත්පරයක් පමණ කාලයක් ගතවීම නිසා ලක්ෂ ගණනක ඉල්ලීම් කළහොත් කාලය ගණනාවක් වැය වේ.
ඒ සඳහා ලේඛකයා මුලින්ම requests පුස්තකාලය භාවිතා කර සරල සින්ක්රෝනස් GET ඉල්ලීමක් කළා. එය හෑෂ්ටැග් photography සඳහා ඉහළම පෝස්ට් 10ක් JSON ලෙස ලබා දුන්නා. නමුත් සියලු හෑෂ්ටැග් 200 කට වැඩි වශයෙන් සකස් කළහොත්, එක්වරම තත්පරයකට පමණ ගතවීම නිසා පැය ගණනක් කාලය ගත විය.
මෙම ගැටළුවට විසඳුමක් ලෙස ThreadPoolExecutor සමඟ ත්රෙඩ් 10 ක් එකවර ධාවනය කිරීමේ විකල්පය ගෙන ආවේ. මෙයින් එක්වරම 10 ඉල්ලීම් යවන බැවින්, සමස්ත කාලය 10 පාරක් අඩු විය. කේත උදාහරණයක් දැක්වෙන්නේ, fetch_hashtag ෆන්ක්ශන් එකක් සෑදීම, එය ත්රෙඩ් පූල් එකට ලබා දීම, සහ ප්රතිඵල ප්රින්ට් කිරීම යන පියවරයි.
වැඩි පරිමාණ දත්ත එකතු කිරීමේ අවශ්යතාවයක් ඇති වීමෙන්, ලේඛකයා asyncio සහ aiohttp භාවිතා කර async ක්රමයක් නිර්මාණය කළා. මෙහිදී asyncio.Semaphore මගින් සමාන්තර ඉල්ලීම් ගණන 10 දක්වා සීමා කර, API රේට් ලිමිට් උල්ලංඝනය නොකළේය. එමෙන්ම 429 හෝ 5xx පදනම්ව ඇති දෝෂ සඳහා exponential backoff පදනම්ව නැවත උත්සාහ කිරීමේ යාන්ත්රණයක් ද එකතු කර ඇත.
එමෙන්ම, ඉල්ලීම් ගණන අනුව පිරිවැය $0.001 එක් ඉල්ලීමකට පමණ නිසා, අඩු වියදමින් වැඩි දත්ත ලබා ගැනීමට හැකිවුණි. තවත් වැදගත් කරුණක් වන්නේ, ප්රතිඵලයන් JSONL ගොනුවකට තත්කාලීනව ලියමින්, ක්රමය අසාර්ථක වූ විට පසුගිය දත්ත නැවත ලබාගත හැකි වීමයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සිසුන්ට – Python හි ThreadPoolExecutor සහ asyncio භාවිතා කර සමකාලීන වැඩ කිරීමේ ප්රායෝගික අත්දැකීම ලැබේ.
- සංවර්ධකයින්ට – Instagram වැනි ප්රසිද්ධ API සමඟ කුඩා පිරිවැයෙන්, ඉහල කාර්යක්ෂමතාවක් ලබා දෙන ක්රමයක් නිර්මාණය කළ හැක.
- ව්යාපාරිකයන්ට – හෑෂ්ටැග් විශ්ලේෂණය, ප්රචාරක ප්රවණතා හඳුනා ගැනීම, සහ අලෙවි තීරණ ගැනීම සඳහා වේගවත්, ස්ථාවර, හා අඩු වියදම් දත්ත එකතු කිරීමේ හැකියාව ලැබේ.
අවසන් වශයෙන්, Instagram දත්ත ලබා ගැනීමට REST API එකක් භාවිතා කිරීම, Python හි සාමාන්ය සමකාලීන පද්ධති (threads, async) සරලව ක්රියාත්මක කර ගැනීමට ඉඩ සලසයි. ඔබේ ව්යාපාරය හෝ පර්යේෂණය සඳහා මෙම ක්රමවේදය භාවිතා කර, වේගවත් හා ආරක්ෂිත දත්ත සංග්රහයක් ලබා ගන්න.