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

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

befa7a877ccdd35d.png

Google App Engine ऐप्लिकेशन को बनाना, मैनेज करना, और ज़रूरत के हिसाब से बढ़ाना आसान होता है. App Engine में, सर्वर को मैनेज करने की ज़रूरत नहीं होती. आपको बस अपना ऐप्लिकेशन अपलोड करना है और वह इस्तेमाल के लिए तैयार हो जाएगा.

इस कोडलैब में, आपको Flask वेब फ़्रेमवर्क का इस्तेमाल करके लिखे गए, सामान्य Python वेब ऐप्लिकेशन को डिप्लॉय करने का तरीका बताया जाएगा. हालांकि, इस सैंपल में Flask का इस्तेमाल किया गया है, लेकिन Django, Pyramid, 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 में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ताओं को, 300 डॉलर का क्रेडिट मिलेगा. वे इसे मुफ़्त में आज़मा सकते हैं.

Cloud Shell शुरू करें

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

Cloud Shell चालू करें

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

3c1dabeca90e44e5.png

अगर आपने Cloud Shell को पहली बार शुरू किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर आपको इंटरमीडिएट स्क्रीन दिखती है, तो जारी रखें पर क्लिक करें.

9c92662c6a846a5c.png

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

9f0e51b578fecce5.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है, जो हमेशा बनी रहती है. साथ ही, यह 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. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं:
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

अपनी पसंद के कमांड लाइन एडिटर (nano, vim या emacs) का इस्तेमाल करके फ़ाइल में बदलाव करें. इसके अलावा, Cloud Shell Editor बटन पर क्लिक करके भी बदलाव किया जा सकता है:

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 फ़ाइल बनाएं. इसमें Flask का वह वर्शन डालें जिसका इस्तेमाल करना है:

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 वेब ऐप्लिकेशन लिखना सीख लिया है!

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

लाइसेंस

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