App Engine (Python 3) का इस्तेमाल शुरू करना

1. खास जानकारी

befa7a877ccdd35d.png

Google App Engine ऐप्लिकेशन बनाने में आसान हैं, बनाए रखने में आसान हैं, और आपकी ट्रैफ़िक और डेटा मेमोरी की ज़रूरतों को बदलने के साथ-साथ स्केल करने में भी आसान हैं. App Engine में, रखरखाव के लिए कोई सर्वर नहीं होता. आप बस अपना ऐप्लिकेशन अपलोड करें और वह इस्तेमाल के लिए तैयार है.

इस कोडलैब में, आपको Flask वेब फ़्रेमवर्क के साथ लिखे गए आसान Python वेब ऐप्लिकेशन को डिप्लॉय करने का तरीका पता चलेगा. हालांकि, इस सैंपल में फ़्लास्क का इस्तेमाल किया गया है, लेकिन अन्य वेब फ़्रेमवर्क का इस्तेमाल किया जा सकता है. इनमें Django, पिरामिड, Bottle, और web.py शामिल हैं.

यह ट्यूटोरियल https://cloud.google.com/appengine/docs/standard/python3/quickstart से लिया गया है

आप इन चीज़ों के बारे में जानेंगे

  • Google App Engine पर आसान Python सर्वर बनाने का तरीका.
  • सर्वर को बंद किए बिना कोड अपडेट करने का तरीका.

आपको इनकी ज़रूरत होगी

  • Python का इस्तेमाल करना
  • vim, emacs या nano जैसे स्टैंडर्ड Linux टेक्स्ट एडिटर के बारे में जानकारी

सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

इसे सिर्फ़ पढ़ें इसे पढ़ें और कसरतों को पूरा करें

Python के साथ अपने अनुभव को आप कितनी रेटिंग देंगे?

शुरुआती इंटरमीडिएट कुशल

Google Cloud की सेवाओं का इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको अपना प्रोजेक्ट आईडी बताना होगा. आम तौर पर, इसकी पहचान PROJECT_ID के रूप में की जाती है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. दूसरा तरीका यह है कि आप खुद भी आज़माकर देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. साथ ही, यह प्रोजेक्ट के खत्म होने तक बना रहता है.
  • आपकी जानकारी के लिए, प्रोजेक्ट नंबर नाम की एक तीसरी वैल्यू दी गई है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, बिलिंग से बचने के लिए संसाधनों को बंद करें. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें 853e55310c205094.png पर क्लिक करें.

3c1dabeca90e44e5.png

अगर आपने Cloud Shell का इस्तेमाल पहली बार किया है, तो आपको बीच में आने वाली स्क्रीन दिखेगी. इसमें यह बताया जाएगा कि यह क्या है. अगर आपको बीच के लेवल पर मिलने वाली स्क्रीन दिखती है, तो जारी रखें पर क्लिक करें.

9c92662c6a846a5c.png

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

9f0e51b578fecce5.png

इस वर्चुअल मशीन में डेवलपमेंट के सभी ज़रूरी टूल मौजूद हैं. इसमें लगातार पांच जीबी की होम डायरेक्ट्री मिलती है और यह Google Cloud में काम करती है. यह नेटवर्क की परफ़ॉर्मेंस और ऑथेंटिकेशन को बेहतर बनाने में मदद करती है. अगर सभी नहीं, तो इस कोडलैब में आपका बहुत सारा काम ब्राउज़र से किया जा सकता है.

Cloud Shell से कनेक्ट करने के बाद, आपको दिखेगा कि आपकी पुष्टि हो चुकी है और प्रोजेक्ट आपके प्रोजेक्ट आईडी पर सेट है.

  1. यह पुष्टि करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं कि आपकी पुष्टि हो गई है:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud के लिए कमांड को आपके प्रोजेक्ट के बारे में जानकारी है:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो आप इसे इस निर्देश की मदद से सेट कर सकते हैं:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. वेब ऐप्लिकेशन लिखें

Cloud Shell लॉन्च होने के बाद, Cloud SDK gcloud कमांड या वर्चुअल मशीन इंस्टेंस पर उपलब्ध अन्य टूल को शुरू करने के लिए, कमांड लाइन का इस्तेमाल किया जा सकता है. अपनी $HOME डायरेक्ट्री का इस्तेमाल, डिस्क के स्थायी स्टोरेज में किया जा सकता है. इससे सभी प्रोजेक्ट में और Cloud Shell सेशन के बीच फ़ाइलों को सेव किया जा सकता है. आपकी $HOME डायरेक्ट्री सिर्फ़ आपके लिए है और इसे दूसरे उपयोगकर्ता ऐक्सेस नहीं कर सकते.

चलिए, ऐप्लिकेशन के लिए अपनी $HOME डायरेक्ट्री में एक नया फ़ोल्डर बनाकर शुरुआत करते हैं:

mkdir ~/helloworld
cd ~/helloworld

main.py नाम की फ़ाइल बनाएं:

touch main.py

अपने पसंदीदा कमांड लाइन एडिटर (नैनो, vim या emacs) का इस्तेमाल करके या क्लाउड शेल एडिटर बटन पर क्लिक करके फ़ाइल में बदलाव करें:

10af7b1a6240e9f4.gif

Cloud Shell Editor से फ़ाइल में सीधे बदलाव करने के लिए, इस निर्देश का इस्तेमाल करें:

cloudshell edit main.py

main.py

import flask

# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)


@app.get("/")
def hello():
    """Return a friendly HTTP greeting."""
    return "Hello World!\n"


if __name__ == "__main__":
    # Used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app. This
    # can be configured by adding an `entrypoint` to app.yaml.
    app.run(host="localhost", port=8080, debug=True)

4. डिपेंडेंसी तय करना

अपने वेब ऐप्लिकेशन की डिपेंडेंसी तय करने के लिए, टर्मिनल पर वापस जाएं और अपने प्रोजेक्ट की रूट डायरेक्ट्री में requirements.txt फ़ाइल बनाएं. इसमें फ़्लास्क के सटीक वर्शन का इस्तेमाल करें:

touch requirements.txt

Cloud Shell Editor की मदद से फ़ाइल में बदलाव करने के लिए, इस निर्देश का इस्तेमाल करें:

cloudshell edit requirements.txt

requirements.txt

# https://pypi.org/project/Flask
Flask==3.0.2

5. डिप्लॉयमेंट को कॉन्फ़िगर करें

अपने वेब ऐप्लिकेशन को App Engine पर डिप्लॉय करने के लिए, आपको app.yaml फ़ाइल की ज़रूरत होगी. यह कॉन्फ़िगरेशन फ़ाइल, App Engine के लिए आपके वेब ऐप्लिकेशन की सेटिंग तय करती है.

टर्मिनल से, अपने प्रोजेक्ट की रूट डायरेक्ट्री में app.yaml फ़ाइल बनाएं और उसमें बदलाव करें:

touch app.yaml

Cloud Shell Editor की मदद से फ़ाइल में बदलाव करने के लिए, इस निर्देश का इस्तेमाल करें:

cloudshell edit app.yaml

app.yaml

runtime: python312

6. वेब ऐप्लिकेशन डिप्लॉय करें

टर्मिनल से, अपनी डायरेक्ट्री का कॉन्टेंट जांचें:

ls

आपके पास ये तीन फ़ाइलें होनी चाहिए:

app.yaml  main.py  requirements.txt

अपने वेब ऐप्लिकेशन को नीचे दिए गए निर्देश की मदद से डिप्लॉय करें:

gcloud app deploy

पहली बार, आपको डिप्लॉयमेंट क्षेत्र चुनना होगा:

Please choose the region where you want your App Engine application
located:

 [1] asia-east2
...
 [7] australia-southeast1
 [8] europe-west
 [9] europe-west2
...
 [12] northamerica-northeast1
 [13] southamerica-east1
...
 [19] us-west4
...
Please enter your numeric choice:

डिप्लॉयमेंट लॉन्च करने की पुष्टि करें:

Creating App Engine application in project [PROJECT_ID] and region [REGION]....done.
Services to deploy:

descriptor:      [~/helloworld/app.yaml]
source:          [~/helloworld]
target project:  [PROJECT_ID]
target service:  [default]
target version:  [YYYYMMDDtHHMMSS]
target url:      [https://PROJECT_ID.REGION_ID.r.appspot.com]

Do you want to continue (Y/n)?

आपका ऐप्लिकेशन डिप्लॉय होता है:

Beginning deployment of service [default]...
Created .gcloudignore file. See `gcloud topic gcloudignore` for details.
Uploading 3 files to Google Cloud Storage
100%
File upload done.
Updating service [default]...done.     
Setting traffic split for service [default]...done.
Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]

आपका वेब ऐप्लिकेशन अब https://PROJECT_ID.REGION_ID.r.appspot.com पर एचटीटीपी अनुरोधों का जवाब देने के लिए तैयार है.

7. वेब ऐप्लिकेशन की जांच करें

आपका वेब ऐप्लिकेशन, https://PROJECT_ID.REGION_ID.r.appspot.com पर एचटीटीपी अनुरोधों का जवाब देने के लिए तैयार है.

सबसे पहले, gcloud app describe निर्देश का इस्तेमाल करके, अपने वेब ऐप्लिकेशन का होस्टनेम पाएं:

APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")

इस आसान एचटीटीपी GET अनुरोध की मदद से अपने वेब ऐप्लिकेशन की जांच करें:

curl https://$APPENGINE_HOSTNAME

आपको यह जवाब मिलना चाहिए:

Hello World!

खास जानकारी

पिछले चरणों में, आपने एक आसान Python वेब ऐप्लिकेशन सेट अप किया था, उसे चलाया, और App Engine पर डिप्लॉय किया था.

8. वेब ऐप्लिकेशन को अपडेट करना

अपनी main.py फ़ाइल के hello() फ़ंक्शन के मुख्य हिस्से को बदलकर, अपने वेब ऐप्लिकेशन में बदलाव करें.

Cloud Shell Editor की मदद से फ़ाइल में बदलाव करने के लिए, इस निर्देश का इस्तेमाल करें:

cloudshell edit main.py

main.py

import flask

# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)


@app.get("/")
def hello():
    """Return a friendly HTTP greeting."""
    # return "Hello World!\n"  # ← Replace this line
    who = flask.request.args.get("who", "World")
    return f"Hello {who}!\n"


if __name__ == "__main__":
    # Used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app. This
    # can be configured by adding an `entrypoint` to app.yaml.
    app.run(host="localhost", port=8080, debug=True)

टर्मिनल से, अपने वेब ऐप्लिकेशन को अपडेट करने के लिए फिर से डिप्लॉय करें:

gcloud app deploy --quiet

आपके ऐप्लिकेशन का नया वर्शन डिप्लॉय किया जाता है:

Beginning deployment of service [default]...
Uploading 1 file to Google Cloud Storage 
...
Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]

अपने वेब ऐप्लिकेशन के नए वर्शन की जांच ठीक उसी तरह करें जैसे आपने पहले किया था:

curl https://$APPENGINE_HOSTNAME

आपको एक जैसा जवाब मिलना चाहिए:

Hello World!

वैकल्पिक पैरामीटर के साथ इसकी जांच करें:

curl https://$APPENGINE_HOSTNAME?who=Universe

आपको यह जवाब मिलना चाहिए:

Hello Universe!

खास जानकारी

इस चरण में, आपने बिना किसी रुकावट के अपने वेब ऐप्लिकेशन को अपडेट और फिर से डिप्लॉय किया है.

9. बधाई हो!

आपने Python में अपना पहला App Engine वेब ऐप्लिकेशन लिखना सीख लिया है!

ज़्यादा जानें

लाइसेंस

इस काम को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है.