1. खास जानकारी
कोडलैब (अपने हिसाब से इस्तेमाल किए जाने वाले टूल) की इस सीरीज़ का मकसद, डेवलपर की मदद करना है, ताकि वे अपने ऐप्लिकेशन को डिप्लॉय करते समय मौजूद कई विकल्पों को समझ सकें. इस कोडलैब में, आपको Python के साथ Google Cloud Translation API को इस्तेमाल करने का तरीका पता चलेगा. साथ ही, यह भी पता चलेगा कि इसे स्थानीय तौर पर कैसे चलाया जाए या बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म (App Engine, Cloud Functions या Cloud Run) पर डिप्लॉय किया जाए. इस ट्यूटोरियल के रेपो में, सैंपल ऐप्लिकेशन को कॉन्फ़िगरेशन में मामूली बदलाव करके, कम से कम आठ अलग-अलग तरीकों से डिप्लॉय किया जा सकता है:
- लोकल फ़्लास्क सर्वर (Python 2)
- लोकल फ़्लास्क सर्वर (Python 3)
- App Engine (Python 2)
- App Engine (Python 3)
- Cloud Functions (Python 3)
- Cloud Run (Docker के ज़रिए Python 2)
- Cloud Run (Docker के ज़रिए Python 3)
- Cloud Run (Cloud Buildpacks के ज़रिए Python 3)
यह कोडलैब इस ऐप्लिकेशन को ऊपर दिए गए बोल्ड प्लैटफ़ॉर्म पर डिप्लॉय करने पर फ़ोकस करता है.
आपको इनके बारे में जानकारी मिलेगी
- Google Cloud API का इस्तेमाल करें, खास तौर पर Cloud Translation API (बेहतर/v3)
- किसी बेसिक वेब ऐप्लिकेशन को स्थानीय तौर पर चलाएं या किसी Cloud सर्वरलेस कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करें
आपको इन चीज़ों की ज़रूरत होगी
- Google Cloud प्रोजेक्ट, जिसमें चालू क्लाउड बिलिंग खाता हो
- डिवाइस पर इस्तेमाल करने के लिए फ़्लास्क इंस्टॉल किया गया या क्लाउड-आधारित डिप्लॉयमेंट के लिए, ऐसा क्लाउड सीवरलेस कंप्यूट प्लैटफ़ॉर्म जो चालू हो
- Python के बुनियादी हुनर
- ऑपरेटिंग सिस्टम के बुनियादी निर्देशों के बारे में काम करने की जानकारी
सर्वे
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Python के साथ अपने अनुभव को आप कितनी रेटिंग देंगे?
Google Cloud की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेटअप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. साथ ही, आप इसे किसी भी समय अपडेट कर सकते हैं.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, आईडी को बदला नहीं जा सकता. सेट अप के बाद इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना पड़ता है और आम तौर पर इसकी पहचान
PROJECT_ID
के रूप में की जाती है. इसलिए, अगर आपको यह पसंद नहीं आता है, तो कोई भी कोड जनरेट करें. इसके अलावा, खुद का भी कोड बनाकर देखा जा सकता है कि वह उपलब्ध है या नहीं. फिर यह "फ़्रोज़न" होता है प्रोजेक्ट बनने के बाद. - तीसरी वैल्यू, प्रोजेक्ट नंबर है, जिसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
- इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा किसी अन्य प्लैटफ़ॉर्म पर बिलिंग न करने के लिए, संसाधनों को बंद करने के लिए, "साफ़-सफ़ाई" का पालन करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.
3. Translation API चालू करें
हमारे नमूना ऐप्लिकेशन के लिए, आप नीचे दिए गए समान निर्देशों का उपयोग करने के बजाय Cloud Translation API और App Engine सेवा को सक्षम करेंगे.
Cloud API चालू करना
शुरुआती जानकारी
आप अपने ऐप्लिकेशन में चाहे जिस Google API का इस्तेमाल करना चाहते हों वह चालू होना चाहिए. यहां दिए गए उदाहरण में, Cloud Vision API को चालू करने के दो तरीके बताए गए हैं. एक Cloud API को चालू करने का तरीका जानने के बाद, अन्य एपीआई चालू किए जा सकते हैं, क्योंकि प्रोसेस एक जैसी है.
पहला विकल्प: Cloud Shell या अपने कमांड-लाइन इंटरफ़ेस से
हालांकि, Cloud Console से एपीआई चालू करना सामान्य बात है, लेकिन कुछ डेवलपर कमांड लाइन से ही सारे काम करना पसंद करते हैं. ऐसा करने के लिए, आपको एपीआई की "सेवा का नाम" खोजना होगा. यह यूआरएल जैसा लग रहा है: SERVICE_NAME
.googleapis.com
. इन्हें इस्तेमाल किए जा सकने वाले प्रॉडक्ट के चार्ट में देखा जा सकता है. इसके अलावा, Google Discovery API की मदद से, प्रोग्राम बनाकर इनके लिए क्वेरी की जा सकती है.
Cloud Shell का इस्तेमाल करके या gcloud
कमांड-लाइन टूल इंस्टॉल किए हुए आपके लोकल डेवलपमेंट एनवायरमेंट का इस्तेमाल करके), इस जानकारी के साथ एपीआई को चालू किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
gcloud services enable SERVICE_NAME.googleapis.com
उदाहरण के लिए, यह निर्देश Cloud Vision API को चालू करता है:
gcloud services enable vision.googleapis.com
यह निर्देश App Engine को चालू करता है:
gcloud services enable appengine.googleapis.com
एक अनुरोध करके, कई एपीआई भी चालू किए जा सकते हैं. उदाहरण के लिए, यह कमांड लाइन Cloud Run, Cloud Artifact Registry, और Cloud Translation API को चालू करती है:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
दूसरा विकल्प: Cloud Console में जाकर
एपीआई मैनेजर में जाकर भी Vision API को चालू किया जा सकता है. Cloud Console में, एपीआई मैनेजर पर जाएं और लाइब्रेरी चुनें.
अगर आपको Cloud Vision API को चालू करना है, तो "विज़न" डालें और आपके द्वारा अभी तक डाले गए शब्दों से मेल खाने वाली कोई भी चीज़ दिखाई देगी:
वह एपीआई चुनें जिसे आपको चालू करना है और चालू करें पर क्लिक करें:
लागत
कई Google API का इस्तेमाल बिना किसी शुल्क के किया जा सकता है. हालांकि, Google Cloud के प्रॉडक्ट और एपीआई मुफ़्त नहीं हैं. Cloud API चालू करते समय, आपसे कोई चालू बिलिंग खाता बनाने के लिए कहा जा सकता है. हालांकि, इस बात का ध्यान रखना ज़रूरी है कि Google Cloud के कुछ प्रॉडक्ट में "हमेशा मुफ़्त" सुविधा मिलती है टियर (रोज़/महीने) से कम का पेमेंट हो सकता है. इसे बिलिंग शुल्क लागू करने के लिए पार करना ज़रूरी है; ऐसा न होने पर, आपके क्रेडिट कार्ड (या चुने गए बिलिंग तरीके) से शुल्क नहीं लिया जाएगा.
किसी एपीआई को चालू करने से पहले, उपयोगकर्ताओं को एपीआई की कीमत से जुड़ी जानकारी देखनी चाहिए. खास तौर पर, यह ध्यान रखना चाहिए कि क्या इसमें फ़्री टीयर है और अगर उपलब्ध है, तो यह क्या है. अगर Cloud Vision API को चालू किया जा रहा था, तो आपको इसकी कीमत की जानकारी वाला पेज देखना होगा. Cloud Vision का मुफ़्त कोटा है. अगर आपको इसकी सीमा में रहकर (हर महीने) में कोई शुल्क नहीं देना है, तो आपसे कोई शुल्क नहीं लिया जाएगा.
Google API के हिसाब से, शुल्क और मुफ़्त टियर अलग-अलग होते हैं. उदाहरण:
- Google Cloud/GCP — हर प्रॉडक्ट का बिल अलग तरीके से लिया जाता है और उनके लिए आम तौर पर हर vCPU साइकल, स्टोरेज के इस्तेमाल से जुड़े उपभोक्ता, मेमोरी के इस्तेमाल या हर बार इस्तेमाल के हिसाब से पैसे चुकाने होते हैं; ऊपर फ़्री टियर की जानकारी देखें.
- Google Maps — इसमें एपीआई का एक सुइट है और उपयोगकर्ताओं को हर महीने 200 डॉलर का मुफ़्त क्रेडिट दिया जाता है.
- Google Workspace (पहले इसे G Suite के नाम से जाना जाता था) API — इसमें Workspace के हर महीने के सदस्यता शुल्क के तहत बिना किसी शुल्क के इस्तेमाल की सुविधा मिलती है. हालांकि, इसके लिए कोई सीमा तय नहीं होती है. इसमें Gmail, Google Drive, Calendar, Docs, Sheets, और Slides के एपीआई के इस्तेमाल के लिए, डायरेक्ट बिलिंग की सुविधा नहीं है.
Google के अलग-अलग प्रॉडक्ट के लिए, अलग-अलग तरीके से बिल भेजा जाता है. इसलिए, उस जानकारी के लिए अपने एपीआई के दस्तावेज़ ज़रूर देखें.
खास जानकारी
अब आप जानते हैं कि Google API को आम तौर पर कैसे चालू किया जाए, तो कृपया API Manager पर जाएं और Cloud Translation API और App Engine सेवा, दोनों को चालू करें (अगर आपने पहले से ऐसा नहीं किया है), पहले वाला क्योंकि हमारा ऐप्लिकेशन इसका इस्तेमाल करेगा और बाद वाला इसलिए क्योंकि आपने App Engine ऐप्लिकेशन को डिप्लॉय किया है. अगर आपको इसे कमांड लाइन से करना है, तो यह निर्देश दें:
gcloud services enable appengine.googleapis.com translate.googleapis.com
हालांकि, इसका हर महीने का कोटा कुल "हमेशा मुफ़्त" सूची में शामिल नहीं है" टीयर की खास जानकारी वाले पेज पर दिखता है, तो Translation API के कीमत तय करने वाले पेज पर यह जानकारी मिलती है कि सभी उपयोगकर्ताओं को हर महीने तय संख्या में अनुवाद किए गए वर्ण मिलते हैं. इस थ्रेशोल्ड से नीचे रहने पर, एपीआई से कोई शुल्क नहीं लिया जाएगा. अगर Google Cloud से जुड़े अन्य शुल्क हैं, तो उनके बारे में "क्लीन अप करें" सेक्शन के आखिर में इस बारे में बताया गया होगा सेक्शन में जाएं.
4. सैंपल ऐप्लिकेशन कोड पाएं
रेपो के कोड को स्थानीय तौर पर या Cloud Shell में (git clone
निर्देश का इस्तेमाल करके) क्लोन करें. इसके अलावा, यहां दिए गए स्क्रीनशॉट में दिखाए गए तरीके से, ZIP फ़ाइल को उसके हरे रंग के कोड बटन से डाउनलोड करें:
अब आपके पास सब कुछ है, तो इस खास ट्यूटोरियल को करने के लिए फ़ोल्डर की पूरी कॉपी बनाएं, क्योंकि इसमें फ़ाइलों को मिटाना या बदलना शामिल हो सकता है. अगर आपको अलग से कोई डिप्लॉयमेंट करना है, तो ओरिजनल फ़ाइल को कॉपी करके फिर से शुरू करें. इससे आपको उसका क्लोन बनाने या उसे दोबारा डाउनलोड करने की ज़रूरत नहीं पड़ेगी.
5. सैंपल ऐप्लिकेशन के बारे में जानकारी
यह सैंपल ऐप्लिकेशन, Google Translate से जुड़ा एक आसान टूल है. यह उपयोगकर्ताओं को अंग्रेज़ी में टेक्स्ट डालने और उसके बराबर अनुवाद स्पैनिश में पाने के लिए कहता है. अब main.py
फ़ाइल खोलें, ताकि हम देख सकें कि यह कैसे काम करती है. लाइसेंस के बारे में टिप्पणी की गई लाइनों को हटाने पर, सबसे ऊपर और सबसे नीचे ऐसा दिखता है:
from flask import Flask, render_template, request
import google.auth
from google.cloud import translate
app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')
# . . . [translate() function definition] . . .
if __name__ == '__main__':
import os
app.run(debug=True, threaded=True, host='0.0.0.0',
port=int(os.environ.get('PORT', 8080)))
- इंपोर्ट से फ़्लास्क फ़ंक्शन,
google.auth
मॉड्यूल, और Cloud Translation API क्लाइंट लाइब्रेरी मिलती है. - ग्लोबल वैरिएबल, फ़्लास्क ऐप्लिकेशन, क्लाउड प्रोजेक्ट आईडी, Translation API क्लाइंट, पैरंट "जगह का पाथ" दिखाते हैं के साथ-साथ अनुवाद API कॉल के लिए भी उपलब्ध हैं. इस मामले में, यह अंग्रेज़ी (
en
) और स्पैनिश (es
) है. हालांकि, इन वैल्यू को बेझिझक Cloud Translation API में इस्तेमाल होने वाले अन्य भाषा कोड में भी बदला जा सकता है. - नीचे दिए गए बड़े
if
ब्लॉक का इस्तेमाल इस ऐप्लिकेशन को स्थानीय तौर पर चलाने के लिए ट्यूटोरियल में किया गया है—यह हमारे ऐप्लिकेशन को चलाने के लिए फ़्लास्क डेवलपमेंट सर्वर का इस्तेमाल करता है. अगर वेब सर्वर को कंटेनर में बंडल नहीं किया गया है, तो यह सेक्शन Cloud Run डिप्लॉयमेंट के ट्यूटोरियल के लिए भी उपलब्ध है. आपसे कंटेनर में सर्वर को बंडल करने की सुविधा चालू करने के लिए कहा जाता है. हालांकि, अगर आप इसे नज़रअंदाज़ कर देते हैं, तो ऐप्लिकेशन कोड, फ़्लास्क डेवलपमेंट सर्वर का इस्तेमाल करने लगता है. (इसमें App Engine या Cloud Functions से जुड़ी समस्या नहीं है, क्योंकि वे सोर्स पर आधारित प्लैटफ़ॉर्म हैं. इसका मतलब है कि Google Cloud डिफ़ॉल्ट वेब सर्वर उपलब्ध कराता है और उसे चलाता है.)
आखिर में, main.py
के बीच में ऐप्लिकेशन का मुख्य बिंदु है, translate()
फ़ंक्शन:
@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
"""
main handler - show form and possibly previous translation
"""
# Flask Request object passed in for Cloud Functions
# (use gcf_request for GCF but flask.request otherwise)
local_request = gcf_request if gcf_request else request
# reset all variables (GET)
text = translated = None
# if there is data to process (POST)
if local_request.method == 'POST':
text = local_request.form['text']
data = {
'contents': [text],
'parent': PARENT,
'target_language_code': TARGET[0],
}
# handle older call for backwards-compatibility
try:
rsp = TRANSLATE.translate_text(request=data)
except TypeError:
rsp = TRANSLATE.translate_text(**data)
translated = rsp.translations[0].translated_text
# create context & render template
context = {
'orig': {'text': text, 'lc': SOURCE},
'trans': {'text': translated, 'lc': TARGET},
}
return render_template('index.html', **context)
मुख्य फ़ंक्शन, उपयोगकर्ता से इनपुट लेने का काम करता है और काम को बेहतर बनाने के लिए Translation API को कॉल करता है. आइए, इसके बारे में जानते हैं:
- यह देखने के लिए कि अनुरोध,
local_request
वैरिएबल का इस्तेमाल करके Cloud Functions से आ रहे हैं या नहीं. Cloud Functions, अपने फ़्लास्क रिक्वेस्ट ऑब्जेक्ट में भेजता है, जबकि दूसरे सभी (स्थानीय तौर पर चल रहे या App Engine या Cloud Run पर डिप्लॉय कर रहे) को सीधे फ़्लास्क से अनुरोध ऑब्जेक्ट मिलेगा. - फ़ॉर्म के बेसिक वैरिएबल को रीसेट करें. यह मुख्य रूप से जीईटी अनुरोधों के लिए है, क्योंकि पोस्ट अनुरोधों में ऐसा डेटा होगा जो इनकी जगह ले लेगा.
- अगर यह एक पीओएसटी है, तो अनुवाद करने के लिए टेक्स्ट लें और एपीआई मेटाडेटा की ज़रूरी शर्तों के बारे में बताने वाली JSON संरचना बनाएं. इसके बाद, अगर उपयोगकर्ता किसी पुरानी लाइब्रेरी का इस्तेमाल कर रहा है, तो एपीआई के पिछले वर्शन पर जाकर एपीआई को कॉल करें.
- इसके बावजूद, टेंप्लेट के कॉन्टेक्स्ट में असल नतीजों (POST) या कोई डेटा नहीं (GET) फ़ॉर्मैट करें और रेंडर करें.
ऐप्लिकेशन का विज़ुअल हिस्सा, टेंप्लेट index.html
फ़ाइल में है. इसमें, पहले अनुवाद किए गए सभी नतीजे दिखते हैं. अगर ऐसा नहीं है, तो किसी फ़ॉर्म के बाद उसका अनुवाद करने के लिए कहा जाता है:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
6. लोकल पैकेज/डिपेंडेंसी (lib में) इंस्टॉल करें
जैसा कि पहले बताया जा चुका है, सैंपल ऐप्लिकेशन, Python के लिए Flask माइक्रो वेब फ़्रेमवर्क और Google Cloud Translation API की क्लाइंट लाइब्रेरी का इस्तेमाल करता है. इस pip
(या pip3
) कमांड से pip
को इंस्टॉल और अपडेट करें. साथ ही, पैकेज के इस जोड़े को अपडेट करें:
pip install -t lib -r requirements.txt
ऊपर बताई गई टिप्पणी को चलाने के बाद, आपको इंस्टॉलेशन आउटपुट दिखेगा, जो कुछ इस तरह से दिख सकता है:
$ pip install -t lib -r requirements.txt DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. Collecting flask>=1.1.2 Using cached Flask-1.1.4-py2.py3-none-any.whl (94 kB) Collecting google-cloud-translate>=2.0.1 Using cached google_cloud_translate-2.0.2-py2.py3-none-any.whl (91 kB) Collecting click<8.0,>=5.1 Using cached click-7.1.2-py2.py3-none-any.whl (82 kB) Collecting Jinja2<3.0,>=2.10.1 Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) Collecting Werkzeug<2.0,>=0.15 Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB) Collecting itsdangerous<2.0,>=0.24 Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB) Collecting google-api-core[grpc]<2.0.0dev,>=1.15.0 Downloading google_api_core-1.29.0-py2.py3-none-any.whl (93 kB) |████████████████████████████████| 93 kB 2.1 MB/s Collecting google-cloud-core<2.0dev,>=1.1.0 Using cached google_cloud_core-1.6.0-py2.py3-none-any.whl (28 kB) Collecting MarkupSafe>=0.23 Using cached MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl (17 kB) Collecting protobuf>=3.12.0 Downloading protobuf-3.17.2-cp27-cp27m-macosx_10_9_x86_64.whl (958 kB) |████████████████████████████████| 958 kB 21.6 MB/s Collecting futures>=3.2.0; python_version < "3.2" Using cached futures-3.3.0-py2-none-any.whl (16 kB) Collecting six>=1.13.0 Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting packaging>=14.3 Using cached packaging-20.9-py2.py3-none-any.whl (40 kB) Collecting googleapis-common-protos<2.0dev,>=1.6.0 Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB) Collecting requests<3.0.0dev,>=2.18.0 Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB) Collecting google-auth<2.0dev,>=1.25.0 Using cached google_auth-1.30.1-py2.py3-none-any.whl (146 kB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting setuptools>=40.3.0 Using cached setuptools-44.1.1-py2.py3-none-any.whl (583 kB) Collecting grpcio<2.0dev,>=1.29.0; extra == "grpc" Using cached grpcio-1.38.0-cp27-cp27m-macosx_10_10_x86_64.whl (3.8 MB) Collecting pyparsing>=2.0.2 Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Collecting chardet<5,>=3.0.2 Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB) Collecting urllib3<1.27,>=1.21.1 Using cached urllib3-1.26.5-py2.py3-none-any.whl (138 kB) Collecting idna<3,>=2.5 Using cached idna-2.10-py2.py3-none-any.whl (58 kB) Collecting certifi>=2017.4.17 Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB) |████████████████████████████████| 145 kB 61.1 MB/s Collecting pyasn1-modules>=0.2.1 Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB) Collecting rsa<4.6; python_version < "3.6" Using cached rsa-4.5-py2.py3-none-any.whl (36 kB) Collecting cachetools<5.0,>=2.0.0 Using cached cachetools-3.1.1-py2.py3-none-any.whl (11 kB) Collecting enum34>=1.0.4; python_version < "3.4" Using cached enum34-1.1.10-py2-none-any.whl (11 kB) Collecting pyasn1<0.5.0,>=0.4.6 Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB) Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask, six, protobuf, futures, pyparsing, packaging, googleapis-common-protos, chardet, urllib3, idna, certifi, requests, pyasn1, pyasn1-modules, rsa, cachetools, setuptools, google-auth, pytz, enum34, grpcio, google-api-core, google-cloud-core, google-cloud-translate ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts. matplotlib 1.3.1 requires nose, which is not installed. matplotlib 1.3.1 requires tornado, which is not installed. Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 Werkzeug-1.0.1 cachetools-3.1.1 certifi-2021.5.30 chardet-4.0.0 click-7.1.2 enum34-1.1.10 flask-1.1.4 futures-3.3.0 google-api-core-1.29.0 google-auth-1.30.1 google-cloud-core-1.6.0 google-cloud-translate-2.0.2 googleapis-common-protos-1.52.0 grpcio-1.38.0 idna-2.10 itsdangerous-1.1.0 packaging-20.9 protobuf-3.17.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-2.4.7 pytz-2021.1 requests-2.25.1 rsa-4.5 setuptools-44.1.1 six-1.16.0 urllib3-1.26.5
7. सेवा को डिप्लॉय करें
अपनी अनुवाद सेवा को Python 2 App Engine पर डिप्लॉय करने के लिए, यह निर्देश चलाएं:
gcloud app deploy
आउटपुट ऐसा दिखना चाहिए. साथ ही, अगले चरणों के बारे में कुछ निर्देश दें:
$ gcloud app deploy Services to deploy: descriptor: [/private/tmp/nebulous-serverless-python/app.yaml] source: [/private/tmp/nebulous-serverless-python] target project: [PROJECT_ID] target service: [default] target version: [20210422t161025] target url: [https://PROJECT_ID.appspot.com] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 1290 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse
अब आपका ऐप्लिकेशन दुनिया भर में उपलब्ध है, इसलिए आप अपने डिप्लॉयमेंट आउटपुट में दिए गए यूआरएल (जिसमें आपका प्रोजेक्ट आईडी मौजूद है) पर उसे ऐक्सेस कर सकते हैं:
यह देखने के लिए कि कोई चीज़ काम कर रही है, उसका अनुवाद करें!
8. नतीजा
बधाई हो! आपने Cloud Translation API को चालू करने, ज़रूरी क्रेडेंशियल पाने, और Python 2 App Engine पर एक आसान वेब ऐप्लिकेशन डिप्लॉय करने का तरीका सीख लिया है! इस डिप्लॉयमेंट के बारे में ज़्यादा जानने के लिए, रेपो में मौजूद इस टेबल पर जाएं.
व्यवस्थित करें
Cloud Translation API की मदद से, हर महीने अनुवाद किए गए वर्णों की संख्या तय की जा सकती है. इसके लिए, कोई शुल्क नहीं चुकाना पड़ता. App Engine का एक मुफ़्त कोटा भी है. ऐसा Cloud Functions और Cloud Run के लिए भी किया जाता है. दोनों में से कोई भी सीमा पार होने पर आपको शुल्क देना होगा. अगर आपको अगले कोडलैब का इस्तेमाल जारी रखना है, तो आपको अपना ऐप्लिकेशन बंद करने की ज़रूरत नहीं है.
हालांकि, अगर आप अभी अगले ट्यूटोरियल पर जाने के लिए तैयार नहीं हैं या आपको इस बात की चिंता है कि इंटरनेट ने उस ऐप्लिकेशन को खोज लिया है जिसे आपने अभी-अभी डिप्लॉय किया है, तो अपना App Engine ऐप्लिकेशन बंद करें, अपना Cloud Function मिटाएं या अपनी Cloud Run सेवा को बंद करें. जब आप अगले कोडलैब पर जाने के लिए तैयार हों, तो उसे फिर से चालू किया जा सकता है. दूसरी ओर, अगर आपको इस ऐप्लिकेशन या अन्य कोडलैब का इस्तेमाल नहीं करना है और सब कुछ पूरी तरह से मिटाना है, तो अपना प्रोजेक्ट बंद करें.
साथ ही, Google Cloud के बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने पर, मामूली बिल्ड और स्टोरेज का खर्च उठाना पड़ता है. Cloud Storage की तरह Cloud Build का अपना अलग कोटा होता है. ज़्यादा पारदर्शिता के लिए, Cloud Build आपके ऐप्लिकेशन की इमेज बनाता है. इसके बाद, इस इमेज को Cloud Container Registry या Artifact Registry में सेव कर दिया जाता है. जब इमेज को सेवा में ट्रांसफ़र किया जाता है, तो नेटवर्क इग्रेस डेटा ट्रैफ़िक के लिए उस इमेज को सेव करने के लिए, तय कोटे का कुछ हिस्सा इस्तेमाल होता है. हालांकि, हो सकता है कि आप किसी ऐसे क्षेत्र में हों जहां ऐसा कोई फ़्री टीयर उपलब्ध न हो. इसलिए, संभावित लागत को कम करने के लिए, अपने स्टोरेज के इस्तेमाल को ध्यान में रखें.
9. अन्य संसाधन
यहां दिए गए सेक्शन में, पढ़ने के लिए अतिरिक्त कॉन्टेंट के साथ-साथ सुझाए गए एक्सरसाइज़ भी दिए गए हैं. इनकी मदद से, इस ट्यूटोरियल को पूरा करने के बाद मिली जानकारी को बेहतर बनाया जा सकता है.
अतिरिक्त स्टडी
अब आपको Translation API का थोड़ा-बहुत अनुभव है. अब आपके हुनर को बेहतर बनाने के लिए हम कुछ और काम करने जा रहे हैं. अपना लर्निंग पाथ जारी रखने के लिए, हमारे सैंपल ऐप्लिकेशन में बदलाव करें, ताकि ये काम किए जा सकें:
- कोडलैब के इस मॉड्यूल के अन्य सभी वर्शन को ऐप्लिकेशन में काम करने या Google Cloud के बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने के लिए पूरा करें. ज़्यादा जानने के लिए, रेपो README देखें.
- इस ट्यूटोरियल को पूरा करने के लिए, प्रोग्रामिंग की किसी दूसरी भाषा का इस्तेमाल करें.
- अलग-अलग स्रोत या लक्षित भाषाओं का समर्थन करने के लिए इस ऐप्लिकेशन को बदलें.
- लेख का एक से ज़्यादा भाषाओं में अनुवाद करने के लिए इस ऐप्लिकेशन को अपग्रेड करें; समर्थित लक्ष्य भाषाओं के पुलडाउन के लिए टेम्प्लेट फ़ाइल को बदल सकते हैं.
ज़्यादा जानें
Google App Engine
- App Engine का होम पेज
- App Engine दस्तावेज़
- Python 3 App Engine क्विकस्टार्ट
- App Engine के लिए डिफ़ॉल्ट सेवा खाते
- Python 2 App Engine (स्टैंडर्ड) रनटाइम
- Python 3 App Engine (स्टैंडर्ड) रनटाइम
- Python 2 और Python 2 के बीच अंतर तीन App Engine (स्टैंडर्ड) रनटाइम
- Python 2 से 3 App Engine (स्टैंडर्ड) माइग्रेशन गाइड
Google Cloud के फ़ंक्शन
- Cloud Functions का होम पेज
- Cloud Functions का दस्तावेज़
- Python Cloud Functions क्विकस्टार्ट
- Cloud Functions के लिए डिफ़ॉल्ट सेवा खाते
Google क्लाउड रन
- Cloud Run का होम पेज
- Cloud Run दस्तावेज़
- Python Cloud Run क्विकस्टार्ट
- Cloud Run के लिए डिफ़ॉल्ट सेवा खाते
Google Cloud Buildpack, कंटेनर रजिस्ट्री, Artifact Registry
- Cloud Buildpacks के बारे में सूचना
- Cloud Buildpacks रेपो
- Cloud Artifact Registry का होम पेज
- Cloud Artifact Registry के दस्तावेज़
- Cloud Container Registry का होम पेज
- Cloud Container Registry के दस्तावेज़
Google Cloud Translation और Google ML Kit
- Cloud Translation का होम पेज
- Cloud Translation से जुड़े दस्तावेज़
- Translation API कीमत तय करने का पेज
- क्लाउड एआई/एमएल के सभी "बिल्डिंग ब्लॉक" एपीआई
- Google ML Kit (मोबाइल के लिए Cloud AI/ML API का सबसेट)
- Google ML Kit Translate API
Google Cloud के अन्य प्रॉडक्ट/पेज
- Google Cloud Python सहायता
- Google Cloud क्लाइंट लाइब्रेरी
- Google Cloud "हमेशा मुफ़्त" टियर
- Google Cloud के सभी दस्तावेज़
Python और फ़्लास्क
लाइसेंस
इस ट्यूटोरियल को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है. वहीं, रेपो में मौजूद सोर्स कोड को Apache 2 के तहत लाइसेंस मिला है.