आप तीन भागों की शृंखला का तीसरा भाग पढ़ रहे हैं। यह अत्यधिक प्रोत्साहित किया जाता है कि आप इस भाग पर आगे बढ़ने से पहले पिछले दो लेख पढ़ें!
पिछले ब्लॉग के अंत तक, फ़्लिक्स-फाइंडर ने विभिन्न एजेंसियों के रेटिंग मापदंडों के आधार पर मूवी खोजों का समर्थन किया। हमारे ऐप की कार्यक्षमता उम्मीदों पर खरी उतरी और अपना इच्छित कार्य हासिल किया। लेकिन कुछ समय बाद, फ़्लिक्स-फाइंडर के ग्राहकों को शिकायत होने लगी कि ऐप फिल्मों के बारे में नवीनतम जानकारी प्रदान नहीं करता है। क्योंकि फ़्लिक्स-फ़ाइंडर स्थिर डेटा का उपयोग करता है, यह ऐसी चीज़ है जिसका हम अनुमान लगाते हैं।
फ़्लिक्स-फाइंडर को कुछ प्रक्रिया की आवश्यकता है जिसके माध्यम से नई फिल्मों को प्रतिबिंबित करने के लिए इसके मूवी डेटा को अपडेट किया जा सके। और, यह कुछ ऐसा है जिसे हम इस अंतिम भाग में लागू करेंगे!
इस तथ्य के बावजूद कि इस कार्यक्षमता को लागू करने के कई तरीके हैं, हम एक नया एंडपॉइंट बनाएंगे जिसका उपयोग डेटा को अपडेट करने के लिए किया जा सकता है। आपका डेटा तुरंत बदल जाएगा, जैसे कि जब आप कोई बटन दबाते हैं। लेकिन अन्य रणनीतियाँ भी हैं, जैसे क्रोनजॉब का उपयोग करना। एक बार इस ब्लॉग में एक रणनीति की बारीकियों का वर्णन किया गया है, तो समान अवधारणाओं का उपयोग करके कोई भी नई तकनीक आसानी से बनाई जा सकती है।
इससे पहले कि हम कोड करना शुरू करें, आइए एक कदम पीछे हटें और अपनी सभी आवश्यकताओं को समझें।
हम एक नया एंडपॉइंट बनाना चाहते हैं और उस एंडपॉइंट पर जाकर फ़्लिक्स-फाइंडर द्वारा उपयोग किए जाने वाले डेटा को अपडेट करना चाहिए। आइए हम /update
एंडपॉइंट का उपयोग करें और इस एंडपॉइंट पर आने वाले किसी भी GET अनुरोध को हमारे ऐप द्वारा उपयोग किए जाने वाले डेटा को अपडेट करना चाहिए।
इंटरफ़ेस की योजना के साथ, आइए अब ' डेटा को कैसे अपडेट करें? ' के बारे में सोचें। ' .
(1) कलेक्टर्स को ब्राइट डेटा पर पुनः चलाएँ
(2) कलेक्टर को चलाने से प्राप्त परिणाम प्राप्त करें
(3) परिणामों को स्थिर फ़ाइलों पर अधिलेखित करें
पहले दो चरणों के लिए, हम ब्राइट डेटा द्वारा प्रदान की गई एपीआई का उपयोग कर सकते हैं। एक बार हमारे पास डेटा हो जाने पर, हम मौजूदा स्थिर फ़ाइलों को अधिलेखित करने के लिए वेनिला पायथन का उपयोग कर सकते हैं।
महान! सब कुछ योजनाबद्ध करके, आइए कार्यान्वयन शुरू करें।
Django में अनुशंसाकर्ता ऐप की view.py
फ़ाइल के अंदर एक नई विधि बनाकर प्रारंभ करें। हम इस विधि को updateData
कहेंगे। यहीं पर स्थैतिक डेटा को अद्यतन करने का हमारा सारा तर्क निहित होगा।
# recommender/views.py def update(request): # TODO: Implement this method return HttpResponse("Movie Data Updated!")
आइए हम भी अपने विचार स्थापित करें। हमें दृश्यों में नव निर्मित विधि के लिए मैपिंग जोड़ने की आवश्यकता है।
# recommender/urls.py from django.urls import path from . import views urlpatterns = [ path("", views.index, name = "index"), path("update", views.updateData, name = "update data") ]
इसके साथ, हमने फ़्लिक्स-फाइंडर में सफलतापूर्वक एक नया एंडपॉइंट बनाया है। हम स्थैतिक डेटा को अद्यतन करने के लिए इस समापन बिंदु का उपयोग करेंगे। अभी के लिए, यह समापन बिंदु कुछ नहीं करता है और बस एक स्ट्रिंग संदेश लौटाता है।
➜ ~ curl localhost:8000/update Movie Data Updated!
इससे पहले कि हम डेटा अपडेट के लिए ब्राइट डेटा एपीआई का उपयोग शुरू कर सकें, हमें एक एपीआई टोकन जेनरेट करना होगा।
ब्राइट डेटा के सभी संचारों में यह टोकन शामिल होना चाहिए और इसका उपयोग प्रमाणीकरण उद्देश्यों के लिए किया जाता है।
एपीआई टोकन जनरेट करने के चरण:
Add Token
बटन पर क्लिक करें।
सुनिश्चित करें कि आपका एपीआई टोकन लीक न हो। आपके एपीआई टोकन तक पहुंच रखने वाला कोई भी व्यक्ति सचमुच ब्राइट डेटा पर आपकी नकल कर सकता है!!!
एक बार एपीआई टोकन उत्पन्न हो जाने के बाद, हम कलेक्टरों को चलाने और कलेक्टर रन से डेटा लाने के लिए एपीआई का उपयोग शुरू करने के लिए तैयार हैं।
अपने संग्राहकों के एपीआई अनुभाग द्वारा आरंभ करें पर जाएं।
यहां आपको कर्ल अनुरोध मिलेंगे जिनका उपयोग आप कलेक्टरों को फिर से चलाने और परिणाम लाने के लिए कर सकते हैं।
कलेक्टर रन शुरू करने के लिए एपीआई: ब्राइट डेटा कलेक्टर रन शुरू करने के लिए एक समापन बिंदु प्रदान करता है। समापन बिंदु https://api.brightdata.com/dca/trigger_immediate
एक POST अनुरोध की अपेक्षा करता है। यह एक क्वेरी पैरामीटर ' कलेक्टर ' की भी अपेक्षा करता है जिसका उपयोग कलेक्टर की विशिष्ट पहचान के लिए किया जाता है। हेडर में एपीआई टोकन होना चाहिए।
यहाँ उसी के लिए कर्ल अनुरोध है।
curl -H "Authorization: Bearer API_TOKEN" -H "Content-Type: application/json" -d '{}' "https://api.brightdata.com/dca/trigger_immediate?collector=c_rj3i0wspnhr0ataba"
इस समापन बिंदु की प्रतिक्रिया एक प्रतिक्रिया आईडी है। इसका उपयोग बाद में परिणाम प्राप्त करने के लिए किया जा सकता है।
कलेक्टर रन से परिणाम लाने के लिए एपीआई: कलेक्टर चलाने से प्राप्त प्रतिक्रिया आईडी के साथ, ब्राइट डेटा हमें कलेक्टर रन से परिणाम लाने के लिए एक और एपीआई प्रदान करता है। समापन बिंदु https://api.brightdata.com/dca/get_result
एक GET अनुरोध की अपेक्षा करता है। यह एक क्वेरी पैरामीटर 'रिस्पॉन्स_आईडी' की भी अपेक्षा करता है जिसका उपयोग कलेक्टर को विशिष्ट रूप से पहचानने के लिए किया जाता है। हेडर में एपीआई टोकन होना चाहिए।
इस समापन बिंदु के लिए कर्ल अनुरोध इस प्रकार दिखेगा।
curl "https://api.brightdata.com/dca/get_result?response_id=RESPONSE_ID" -H "Authorization: Bearer API_TOKEN"
उपयोग के लिए एंडपॉइंट के ज्ञान और एपीआई टोकन के साथ, हम अपडेट एंडपॉइंट को लागू करना शुरू कर सकते हैं।
(1) कलेक्टर्स को ब्राइट डेटा पर पुनः चलाएँ
(2) कलेक्टर को चलाने से प्राप्त परिणाम प्राप्त करें
(3) परिणामों को स्थिर फ़ाइलों पर अधिलेखित करें
सबसे पहले हमें री-रन कलेक्टर एपीआई का उपयोग करना होगा और एक प्रतिक्रिया आईडी प्राप्त करनी होगी। हम इस कार्य को करने के लिए पायथन की अनुरोध लाइब्रेरी का उपयोग करेंगे।
API_TOKEN = "###########" # Replace by your API Token response = requests.post( "https://api.brightdata.com/dca/trigger_immediate?collector=c_rj3i0wspnhr0ataba", headers={"Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json"}, json={} ) if response.status_code < 200 or response.status_code > 299 or 'response_id' not in response.json(): return HttpResponseServerError('Something Wrong Happened') response_id = response.json().get('response_id')
अगला चरण परिणाम प्राप्त करने के लिए प्रतिक्रिया आईडी का उपयोग करना है। परिणाम प्राप्त करने का प्रयास करने से पहले हम कुछ समय तक प्रतीक्षा करेंगे।
time.sleep(30) # Sleeping for 30 seconds get_results_response = requests.get( f"https://api.brightdata.com/dca/get_result?response_id={response_id}", headers={"Authorization": f"Bearer {API_TOKEN}"} )
हाथ में डेटा होने पर, हम इस नए डेटा के साथ स्थिर फ़ाइल को अधिलेखित कर सकते हैं।
movie_data = get_results_response.json() data_file = open(ROTTEN_TOMATO_DATA_FILE_PATH, encoding="utf8", mode="w") json.dump(movie_data, data_file, indent=4) data_file.close()
इसके साथ ही अद्यतन पद्धति का कार्यान्वयन पूरा हो गया है।
डेटा अपडेशन प्रक्रिया शुरू करने के लिए एंडपॉइंट localhost:8000/update
पर एक सरल कर्ल अनुरोध किया जा सकता है। एक बार एपीआई वापस आ जाए, तो डेटा अपडेट हो जाएगा।
➜ ~ curl localhost:8000/update Movie Data Updated!
अंततः, हम इस खंड के निष्कर्ष पर पहुँच गये हैं। फ़्लिक्स-फाइंडर में, हम डेटा अपडेटिंग कार्यक्षमता को एकीकृत करने में सक्षम थे। परिणामस्वरूप, हमारा फ़्लिक्स-फाइंडर अपने उपयोगकर्ताओं के लिए हमेशा ताज़ा डेटा के साथ उपलब्ध रहेगा!
मुझे आशा है कि आपको तीन भाग वाली श्रृंखला पसंद आयी होगी। इस Github रिपॉजिटरी में संपूर्ण संग्रह का स्रोत कोड शामिल है।
ऐसे और भी अद्भुत लेखों के लिए आप मुझे HackerNoon पर फ़ॉलो कर सकते हैं। अगले लेख में मिलते हैं... तब तक, हैप्पी लर्निंग! 🙂