फ़्लास्क ऐप्लिकेशन में App Engine Memcache का इस्तेमाल कैसे करें (मॉड्यूल 12)

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

कोडलैब के बिना सर्वर वाले माइग्रेशन स्टेशन की सीरीज़ (अपने हिसाब से इस्तेमाल किए जाने वाले ट्यूटोरियल) और मिलते-जुलते वीडियो का मकसद, Google Cloud के बिना सर्वर वाले डेवलपर को अपने ऐप्लिकेशन को आधुनिक बनाने में मदद करना है. ऐसा करने के लिए, उन्हें लेगसी सेवाओं का इस्तेमाल बंद करना होगा. ऐसा करने के लिए, उन्हें एक या एक से ज़्यादा माइग्रेशन में मदद मिलेगी. ऐसा करने से, आपके ऐप्लिकेशन ज़्यादा पोर्टेबल बन जाते हैं. साथ ही, आपको ज़्यादा विकल्प और सुविधाएं भी मिलती हैं. इससे, क्लाउड प्रॉडक्ट की बड़ी रेंज को इंटिग्रेट किया जा सकता है और उन्हें ऐक्सेस किया जा सकता है. साथ ही, नई भाषाओं में रिलीज़ किए जाने वाले ऐप्लिकेशन पर आसानी से अपग्रेड किया जा सकता है. शुरुआत में App Engine (स्टैंडर्ड एनवायरमेंट) वाले डेवलपर पर ध्यान दिया जाता है. हालांकि, यह सीरीज़ इतनी बड़ी है कि इसमें Cloud Functions और Cloud Run जैसे बिना सर्वर वाले प्लैटफ़ॉर्म या लागू होने पर, उन्हें शामिल किया जा सकता है.

यह कोडलैब आपको मॉड्यूल 1 कोडलैब से, ऐप्लिकेशन इंजन मेमकैश को सैंपल ऐप्लिकेशन में शामिल करने और इस्तेमाल करने का तरीका सिखाता है. हमने इस मॉड्यूल 12 ट्यूटोरियल में Memcache के इस्तेमाल को जोड़ा है. इसके बाद, मॉड्यूल 13 में आगे Cloud Memorystore में माइग्रेट करें.

आपको इनके बारे में जानकारी मिलेगी

  • App Engine Memcache API/लाइब्रेरी का इस्तेमाल करें
  • बेसिक Python 2 Flask App Engine NDB ऐप्लिकेशन में कैश मेमोरी जोड़ना

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

सर्वे

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

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

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

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

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

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

2. बैकग्राउंड

App Engine Memcache से माइग्रेट करने के लिए, इसके इस्तेमाल को मॉड्यूल 1 कोडलैब से मिलने वाले मौजूदा फ़्लास्क और App Engine NDB ऐप्लिकेशन में जोड़ें. नमूना ऐप्लिकेशन उपयोगकर्ता की सबसे हाल की दस विज़िट दिखाता है. अगर एक ही उपयोगकर्ता अपना ब्राउज़र रीफ़्रेश करता है, तो लगातार नई विज़िट इकाइयां बनाना और Datastore से सबसे हाल की विज़िट को फ़ेच करना, अच्छी बात नहीं है. इसलिए, हम सबसे हाल की विज़िट को कैश मेमोरी में सेव करेंगे.

अगर वही विज़िटर पेज पर हिट करता है, तो वे विज़िट कैश मेमोरी से वापस आ जाती हैं. अगर कोई नया उपयोगकर्ता साइट पर आता है या एक घंटा बीत चुका है, तो कैश मेमोरी मिटा दी जाती है और उसे सबसे हाल की एंट्री से बदल दिया जाता है (नई विज़िट के बारे में बताने की ज़रूरत नहीं है). इस App Engine Memcache इंटिग्रेशन लागू होने के बाद, हम इसे अगले (मॉड्यूल 13) कोडलैब में Cloud Memorystore में माइग्रेट कर सकते हैं.

इस ट्यूटोरियल में ये चरण बताए गए हैं:

  1. सेटअप/प्रीवर्क
  2. कॉन्फ़िगरेशन अपडेट करें
  3. ऐप्लिकेशन कोड बदलें

3. सेटअप/प्रीवर्क

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

1. प्रोजेक्ट सेटअप करें

अगर आपने मॉड्यूल 1 कोडलैब पूरा कर लिया है, तो हमारा सुझाव है कि आप उसी प्रोजेक्ट (और कोड) का फिर से इस्तेमाल करें. इसके अलावा, नया प्रोजेक्ट बनाया जा सकता है या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल किया जा सकता है. पक्का करें कि प्रोजेक्ट में एक चालू बिलिंग खाता हो और App Engine चालू हो.

2. बेसलाइन ऐप्लिकेशन का नमूना डाउनलोड करें

इस कोडलैब के लिए एक ज़रूरी शर्त, काम करने वाला मॉड्यूल 1 सैंपल ऐप्लिकेशन होना चाहिए. अगर आपके पास कोई ट्यूटोरियल नहीं है, तो यहां आगे बढ़ने से पहले, ऊपर दिए गए लिंक में से किसी एक को पूरा करें. अगर आपको इसके कॉन्टेंट के बारे में पहले से जानकारी है, तो यहां दिए गए मॉड्यूल 1 कोड के साथ शुरुआत करें.

चाहे आप अपने या हमारे कोड का इस्तेमाल करें, हम मॉड्यूल 1 कोड का इस्तेमाल करके शुरुआत करेंगे. यह कोडलैब आपको हर चरण पर ले जाता है. इससे आपको एक कोड मिलता है, जो मॉड्यूल 11 रेपो फ़ोल्डर (FINISH) में मौजूद कोड से मिलता-जुलता है.

मॉड्यूल 1 की शुरुआती फ़ाइलों (आपकी या हमारी) की डायरेक्ट्री कुछ इस तरह दिखनी चाहिए:

$ ls
README.md               main.py                 templates
app.yaml                requirements.txt

3. (फिर से) बेसलाइन ऐप्लिकेशन डिप्लॉय करें

कार्रवाई से पहले, इन चरणों को पूरा करें:

  1. gcloud कमांड-लाइन टूल का इस्तेमाल करके, फिर से जानें
  2. gcloud app deploy के साथ सैंपल ऐप्लिकेशन को फिर से डिप्लॉय करें
  3. पुष्टि करना कि ऐप्लिकेशन बिना किसी समस्या के App Engine पर चल रहा है

उन चरणों को सफलतापूर्वक पूरा कर लेने और अपने वेब ऐप्लिकेशन को काम करते हुए (नीचे दिए गए आउटपुट से मिलते-जुलते आउटपुट के साथ) देखने के बाद, आप अपने ऐप्लिकेशन में कैश मेमोरी का इस्तेमाल जोड़ने के लिए तैयार हैं.

a7a9d2b80d706a2b.png

4. कॉन्फ़िगरेशन अपडेट करें

मानक App Engine कॉन्फ़िगरेशन फ़ाइलों (app.yaml, requirements.txt, appengine_config.py) में किसी बदलाव की ज़रूरत नहीं है.

5. ऐप्लिकेशन फ़ाइलों में बदलाव करें

हम सिर्फ़ App Engine API जोड़ रहे हैं. इसलिए, इसमें कोई बाहरी पैकेज शामिल नहीं है. इसका मतलब है कि किसी भी कॉन्फ़िगरेशन फ़ाइल (app.yaml, requirements.txt, appengine_config.py) को अपडेट करने की ज़रूरत नहीं है. यहां सिर्फ़ एक ऐप्लिकेशन फ़ाइल है, main.py, इसलिए इस सेक्शन में किए गए सभी बदलाव सिर्फ़ उस फ़ाइल पर असर डालते हैं.

आयात

Memcache लाइब्रेरी, google.appengine.api.memcache इंपोर्ट करना सबसे ज़रूरी चरण है. चूंकि हम सबसे हाल की विज़िट को एक घंटे के लिए संचित करने वाले हैं, इसलिए हम एक घंटे में सेकंड की संख्या के लिए एक स्थिरांक भी जोड़ देते हैं. नीचे बताया गया है कि आपका कोड पहले कैसा दिखता है और यह बदलाव क्या है:

पहले:

from flask import Flask, render_template, request
from google.appengine.ext import ndb

app = Flask(__name__)

बाद में:

from flask import Flask, render_template, request
from google.appengine.api import memcache
from google.appengine.ext import ndb

app = Flask(__name__)
HOUR = 3600

मेमकैश की सुविधा की मदद से कैश मेमोरी में डेटा सेव करना

सबसे बड़ा बदलाव हमारे ऐप्लिकेशन में कैश मेमोरी का इस्तेमाल जोड़ना है. खास तौर पर, हमें सबसे हाल की विज़िट को कैश करना चाहिए, यह देखने के लिए जांच करनी चाहिए कि कैश मेमोरी में सेव की गई विज़िट उपलब्ध हैं या नहीं, और अपने प्लान के मुताबिक कैश मेमोरी में सेव किए गए नतीजों का ज़्यादा से ज़्यादा इस्तेमाल करने की कोशिश करनी चाहिए. हमारा लक्ष्य पूरा करने के लिए, ऐप्लिकेशन इन चरणों को पूरा करेगा:

  1. वर्तमान विज़िट सेट करें और उसे visitor नाम दें
  2. कैश मेमोरी से सबसे हाल ही के visits को फ़ेच करने की कोशिश करें
  3. अगर कैश मेमोरी खाली है या हाल ही में आया विज़िटर (visits[0]['visitor']) मौजूदा visitor से अलग है: इस नई विज़िट को सेव करें, हाल में की गई विज़िट की जानकारी फ़ेच करें, और उन्हें एक घंटे के लिए कैश मेमोरी में सेव करें.
  4. वेब टेंप्लेट की मदद से उपयोगकर्ता को visits दिखाएं

इन अपडेट से पहले और बाद की बातें यहां दी गई हैं:

पहले:

@app.route('/')
def root():
    'main application (GET) handler'
    store_visit(request.remote_addr, request.user_agent)
    visits = fetch_visits(10)
    return render_template('index.html', visits=visits)

बाद में:

@app.route('/')
def root():
    'main application (GET) handler'
    # check for (hour-)cached visits
    ip_addr, usr_agt = request.remote_addr, request.user_agent
    visitor = '{}: {}'.format(ip_addr, usr_agt)
    visits = memcache.get('visits')

    # register visit & run DB query if cache empty or new visitor
    if not visits or visits[0]['visitor'] != visitor:
        store_visit(ip_addr, usr_agt)
        visits = list(fetch_visits(10))
        memcache.set('visits', visits, HOUR)  # set() not add()

    return render_template('index.html', visits=visits)

यहां किए गए बदलावों को तस्वीरों के ज़रिए दिखाया गया है:

b1242503602f7bf0.png

इसके बाद, मॉड्यूल 1 सैंपल ऐप्लिकेशन में App Engine memcache के इस्तेमाल को जोड़ने से जुड़े सभी ज़रूरी बदलाव खत्म हो जाते हैं. इस ऐप्लिकेशन को बनाएं और डिप्लॉय करें, ताकि यह काम करे!

6. खास जानकारी/क्लीनअप

यह सेक्शन, कोडलैब के इस मॉड्यूल को रैप करके पूरा करता है. इसके लिए, ऐप्लिकेशन को डिप्लॉय किया जाता है. साथ ही, यह पुष्टि की जाती है कि यह सही तरीके से और किसी भी नतीजे पर दिखने वाले आउटपुट के हिसाब से काम करता है या नहीं. ऐप्लिकेशन की पुष्टि करने के बाद, क्लीनअप करने के लिए सभी चरणों को पूरा करें और आगे के चरणों के बारे में सोचें.

ऐप्लिकेशन डिप्लॉय करें और उसकी पुष्टि करें

gcloud app deploy के साथ अपने ऐप्लिकेशन को फिर से डिप्लॉय करें और पक्का करें कि ऐप्लिकेशन काम कर रहा हो. अब आपका कोड, FINISH, मॉड्यूल 12 फ़ोल्डर में मौजूद कोड से मेल खाना चाहिए. आउटपुट, उस मॉड्यूल 1 ऐप्लिकेशन के जैसा होना चाहिए जिसे आपने पहले डिप्लॉय किया था:

a7a9d2b80d706a2b.png

हमने सिर्फ़ एक ही उपयोगकर्ता को बेहतर उपयोगकर्ता अनुभव दिया. उन्हें रीफ़्रेश करने पर, आपको सीधे कैश मेमोरी से नतीजे मिलेंगे. इससे न तो नई विज़िट बनती है और न ही डेटास्टोर को फ़ेच किया जाता है.

हमारे नमूना ऐप्लिकेशन में App Engine memcache सेवा का उपयोग जोड़ने के लिए, मॉड्यूल 12 कोडलैब पूरा करने पर बधाई. अब बोनस चरण में, इस Python 2 ऐप्लिकेशन को Python 3 में पोर्ट किया जा सकता है.

व्यवस्थित करें

सामान्य

अगर आपका काम अभी हो गया है, तो हमारा सुझाव है कि आप बिलिंग से बचने के लिए अपना App Engine ऐप्लिकेशन बंद कर दें. हालांकि, अगर आपको कुछ और टेस्ट या एक्सपेरिमेंट करना है, तो App Engine प्लैटफ़ॉर्म का एक मुफ़्त कोटा है. अगर इस्तेमाल के टीयर को पार नहीं किया जा रहा है, तो आपसे शुल्क नहीं लिया जाएगा. यह कंप्यूट के लिए है. हालांकि, काम के App Engine की सेवाओं के लिए भी शुल्क लिया जा सकता है. इसलिए, ज़्यादा जानकारी के लिए इसका कीमत पेज देखें. अगर इस माइग्रेशन में क्लाउड की अन्य सेवाएं शामिल हैं, तो उनका बिल अलग से भेजा जाता है. दोनों ही मामलों में, अगर लागू हो, तो "इस कोडलैब के लिए खास" सेक्शन देखें सेक्शन देखें.

अगर आपको पूरी जानकारी देनी है, तो App Engine जैसे Google Cloud के बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने पर, मामूली बनाने और स्टोरेज का खर्च उठाना पड़ता है. Cloud Storage की तरह Cloud Build का अपना अलग कोटा होता है. उस इमेज का स्टोरेज, उसके कुछ हिस्से का इस्तेमाल करता है. हालांकि, हो सकता है कि आप किसी ऐसे क्षेत्र में हों जहां ऐसा कोई फ़्री टीयर उपलब्ध न हो. इसलिए, संभावित लागत को कम करने के लिए, अपने स्टोरेज के इस्तेमाल को ध्यान में रखें. Cloud Storage के लिए तय किए गए "फ़ोल्डर" तो आपको इन चीज़ों की समीक्षा करनी चाहिए:

  • console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/images
  • console.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com
  • ऊपर दिए गए स्टोरेज लिंक, आपके PROJECT_ID और *LOC*ेशन के हिसाब से होते हैं. जैसे, "us" अगर आपका ऐप्लिकेशन अमेरिका में होस्ट किया जाता है.

दूसरी ओर, अगर आपको इस ऐप्लिकेशन या इससे जुड़े दूसरे माइग्रेशन कोडलैब का इस्तेमाल नहीं करना है और सब कुछ पूरी तरह से मिटाना है, तो अपना प्रोजेक्ट बंद कर दें.

इस कोडलैब के लिए खास

नीचे दी गई सेवाएं, इस कोडलैब के लिए यूनीक हैं. ज़्यादा जानकारी के लिए हर प्रॉडक्ट के दस्तावेज़ देखें:

अगले चरण

अगला लॉजिकल माइग्रेशन, मॉड्यूल 13 में शामिल किया गया है. इसमें डेवलपर को App Engine memcache सेवा से Cloud Memorystore पर माइग्रेट करने का तरीका बताया गया है. ये सभी माइग्रेशन वैकल्पिक हैं और उन उपयोगकर्ताओं के लिए उपलब्ध हैं जो अपने ऐप्लिकेशन को आधुनिक बनाने के लिए कई तरह के कदम उठाना चाहते हैं. Cloud Memorystore सेवा, कई वजहों से App Engine के memcache में अपग्रेड की गई है:

  • Cloud Memorystore सर्वरलेस नहीं है. इसका मतलब है कि आपको कैश मेमोरी के लिए एक सर्वर तय करना होगा. Cloud Memorystore में कोई फ़्री टियर भी नहीं है. इन दोनों वजहों से लागत पर काफ़ी असर पड़ सकता है.
  • Cloud Memorystore, अलग-अलग स्टोरेज मैकेनिज़्म (कैशिंग इंजन), Redis, और Memcached के साथ काम करता है.
  • Cloud Memorystore (Redis के लिए) में App Engine Memcache के मुकाबले ज़्यादा बेहतर और ज़्यादा जानकारी वाली सुविधा है.
  • Cloud Memorystore का इस्तेमाल करने के लिए, आपको Cloud Memorystore सर्वर सेट अप करना होगा और उसे Google Cloud VPC नेटवर्क से जोड़ना होगा. इसके बाद, आपके App Engine ऐप्लिकेशन को उस नेटवर्क का इस्तेमाल करने के लिए कहना होगा, ताकि आपके Memorystore सर्वर से संपर्क किया जा सके.

अगर आपको Cloud Memorystore पर उपलब्ध सभी सुविधाओं की ज़रूरत नहीं है या आप इसकी कीमत के बारे में परेशान हैं, तो आप App Engine Memcache पर बने रह सकते हैं.

मॉड्यूल 13 के बाद, Cloud NDB, Cloud Datastore या Cloud Tasks जैसे अन्य माइग्रेशन की पूरी जानकारी है. Cloud Run और Cloud Functions के लिए, क्रॉस-प्रॉडक्ट माइग्रेशन भी उपलब्ध हैं. माइग्रेशन रिपो पर आपको ये सभी जानकारी मिल जाएगी.

इसके अलावा, Python 3 में पोर्ट करना भी एक और तरीका है. इसके बारे में अगले सेक्शन में बताया गया है. हालांकि, ऐसा करना ज़रूरी नहीं है.

7. BONUS: Python 3 पर माइग्रेशन

खास जानकारी

इस सेक्शन में, बोनस कॉन्टेंट को मॉड्यूल 12 ऐप्लिकेशन में माइग्रेट करने का विकल्प दिया गया है. हमने अभी-अभी इस कॉन्टेंट को Python 3 पर माइग्रेट करने का काम पूरा कर लिया है. हम सबसे पहले ऐप्लिकेशन को कॉन्फ़िगर करते हैं.

app.yaml को आसान बनाएं

Python 3 रनटाइम का एक फ़ायदा यह है कि app.yaml को काफ़ी आसान बनाया जा सकता है.

पहले:

मॉड्यूल 12 के आखिर में बताए गए app.yaml में ये बातें बताई गई हैं:

runtime: python27
threadsafe: yes
api_version: 1

handlers:
- url: /.*
  script: main.app

Python 3 रनटाइम को वेब फ़्रेमवर्क को अपनी रूटिंग खुद तय करने की ज़रूरत होती है, इसलिए app.yaml में सभी रूट हैंडलर को auto में बदलना ज़रूरी है. अगर कोई स्टैटिक फ़ाइल उपलब्ध नहीं है, तो उपयोगकर्ता handlers: के पूरे सेक्शन को सीधे हटा सकते हैं. साथ ही, threadsafe और api_version, दोनों को बंद कर दिया गया है.

बाद में:

अभी बताए गए ज़रूरी बदलावों के हिसाब से, यह Python 3 की जगह इस्तेमाल होने वाला app.yaml है:

runtime: python39
app_engine_apis: true

सिर्फ़ app_engine_apis: true की जानकारी देना ज़रूरी है. जब 2021 में लेगसी ऐप्लिकेशन इंजन की सेवाएं, दूसरी जनरेशन के रनटाइम के लिए उपलब्ध होंगी, तो Python 3 के साथ-साथ कुछ रनटाइम को अतिरिक्त बूटस्ट्रैपिंग की ज़रूरत होगी. ऐसा ndb, taskqueue, और memcache जैसे एपीआई को ऐक्सेस करने के लिए किया जाएगा. कॉन्फ़िगरेशन की यह लाइन इस मकसद को पूरा करती है.

ज़रूरी शर्तें.txt अपडेट करें

requirements.txt में, ओरिजनल एपीआई की एक और बूटस्ट्रैपिंग ज़रूरी है: इसमें नए App Engine SDK टूल का ऐक्सेस शामिल होना चाहिए.

पहले:

मॉड्यूल 12 के आखिर में बताए गए app.yaml में ये बातें बताई गई हैं:

flask

बाद में:

बस App Engine Python SDK टूल जोड़ें और आपके पास ये होना चाहिए:

flask
appengine-python-standard

appengine_config.py और lib हटाएं

अगली-पीढ़ी की टेक्नोलॉजी के हिसाब से, App Engine के रनटाइम की मदद से तीसरे पक्ष के पैकेज के इस्तेमाल में बदलाव किया जाता है:

  • पहले से मौजूद लाइब्रेरी, ऐसी लाइब्रेरी होती हैं जिनकी जांच Google करता है और इन्हें App Engine के सर्वर पर उपलब्ध कराया जाता है. ऐसा इसलिए होता है, क्योंकि इनमें C/C++ कोड मौजूद होता है, जिसे डेवलपर क्लाउड पर डिप्लॉय नहीं कर सकते—ये अब दूसरी पीढ़ी के रनटाइम में उपलब्ध नहीं होते.
  • पहले से मौजूद लाइब्रेरी (कभी-कभी "वेंडिंग" या "सेल्फ़-बंडलिंग" भी कहा जाता है) को कॉपी करने की ज़रूरत अब दूसरी जनरेशन के रनटाइम में नहीं होगी. इसके बजाय, उन्हें requirements.txt में शामिल किया जाना चाहिए. यहां बिल्ड सिस्टम डिप्लॉय करते समय, आपकी ओर से इन्हें अपने-आप इंस्टॉल करता है.

तीसरे पक्ष के पैकेज मैनेजमेंट में किए गए बदलावों की वजह से, न तो appengine_config.py फ़ाइल और न ही lib फ़ोल्डर की ज़रूरत है. इसलिए, इन्हें मिटा दें. दूसरी जनरेशन के रनटाइम में, App Engine की मदद से requirements.txt में दिए गए तीसरे पक्ष के पैकेज अपने-आप इंस्टॉल हो जाते हैं. खास जानकारी:

  1. किसी तीसरे पक्ष की लाइब्रेरी को खुद से बंडल या कॉपी नहीं किया जाना चाहिए; उन्हें requirements.txt में दिखाओ
  2. lib फ़ोल्डर में कोई pip install नहीं है. इसका मतलब है कि lib फ़ोल्डर में कोई पीरियड नहीं है
  3. app.yaml में पहले से मौजूद तीसरे पक्ष की लाइब्रेरी की कोई सूची नहीं है (इसलिए, libraries सेक्शन नहीं है); उन्हें requirements.txt में लिस्ट करो
  4. आपके ऐप्लिकेशन से रेफ़रंस के लिए तीसरे पक्ष की कोई भी लाइब्रेरी नहीं होने का मतलब है कि कोई appengine_config.py फ़ाइल नहीं है

सिर्फ़ requirements.txt में तीसरे पक्ष की सभी लाइब्रेरी की जानकारी देना, डेवलपर के लिए ज़रूरी है.

App Engine SDK टूल का इस्तेमाल करने के लिए ऐप्लिकेशन अपडेट करें

जैसा कि ऊपर बताया गया है, App Engine की बंडल की गई सेवाओं को ऐक्सेस करने के लिए, Python 3 ऐप्लिकेशन में कुछ बदलाव करने की ज़रूरत होती है:

  1. App Engine SDK टूल बंडल करें (requirements.txt में)
  2. App Engine SDK टूल चालू करें (app.yaml में)
  3. WSGI ऑब्जेक्ट रैप करें (main.py में)

पहला पेयर ऊपर पूरा हो गया था. इसलिए, आखिरी बार main.py को अपडेट करना ज़रूरी है.

पहले:

मॉड्यूल 12 के आखिर में बताया गया है, Python 2 main.py:

from flask import Flask, render_template, request
from google.appengine.api import memcache
from google.appengine.ext import ndb

app = Flask(__name__)
HOUR = 3600

बाद में:

Python 3 पोर्ट के लिए, SDK टूल इंपोर्ट करें और फ़्लास्क ऐप्लिकेशन ऑब्जेक्ट को इसके साथ (SDK टूल रैपर) रैप करें. ऐसा करने से, ये नतीजे मिलेंगे:

from flask import Flask, render_template, request
from google.appengine.api import memcache, wrap_wsgi_app
from google.appengine.ext import ndb

app = Flask(__name__)
app.wsgi_app = wrap_wsgi_app(app.wsgi_app)
HOUR = 3600

बंडल की गई सेवाओं को ऐक्सेस करने के लिए, 2.x से 3.x में पोर्ट करते समय, डेवलपर को अपने Python ऐप्लिकेशन में ये बदलाव करने होंगे. अगर आप 'फ़्लास्क' का इस्तेमाल नहीं कर रहे हैं, तो 'दस्तावेज़' में Django और पिरामिड के नमूने भी मौजूद हैं. अगर आपका Python 2 कोड, वेब ऐप्लिकेशन नहीं है, तो Python 3 में पोर्ट करते समय SDK टूल के पैकेज को शामिल करना काफ़ी होगा. हमारे ऐप्लिकेशन कोड को मूल रूप से Python 2 और 3 के तहत काम करने के लिए बनाया गया था. इसलिए, इसके साथ काम करने के लिए किसी और बदलाव की ज़रूरत नहीं है.

ऐप्लिकेशन डिप्लॉय करें

ऊपर दिए गए बदलावों को पूरा करने के बाद, अपडेट किए गए सैंपल ऐप्लिकेशन को डिप्लॉय किया जा सकता है. एक ही GCP प्रोजेक्ट में, ओरिजनल Python 2 वर्शन पर अपने ऐप्लिकेशन के Python 3 वर्शन को डिप्लॉय करने में कोई समस्या नहीं होती. ऐप्लिकेशन का व्यवहार पहले जैसा ही रहना चाहिए. अगर आपको अपने अपडेट किए गए ऐप्लिकेशन की तुलना हमारे ऐप्लिकेशन से करनी है, तो माइग्रेशन रेपो में मॉड्यूल 12b फ़ोल्डर देखें. Python 3 जैसे नए रनटाइम में, App Engine की बंडल की गई सेवाओं के बारे में ज़्यादा जानने के लिए, सुविधा के लॉन्च की सूचना और मॉड्यूल 17 कोडलैब देखें.

मॉड्यूल 12 में बोनस स्टेप पूरा करने पर बधाई! Python 3 रनटाइम के लिए कॉन्फ़िगरेशन फ़ाइलें तैयार करने से जुड़ा दस्तावेज़ भी देखें. अगले चरणों और क्लीनअप के बारे में जानने के लिए, ऊपर दिए गए खास जानकारी/क्लीनअप सेक्शन की समीक्षा करें.

8. अन्य संसाधन

डेवलपर के लिए, इस या इससे जुड़े माइग्रेशन मॉड्यूल के साथ-साथ इससे जुड़े अन्य प्रॉडक्ट को एक्सप्लोर करने के लिए, यहां कुछ अतिरिक्त संसाधन दिए गए हैं. इसमें ऐसी जगहें शामिल हैं जहां इस कॉन्टेंट पर सुझाव, शिकायत या राय दी जा सकती है. साथ ही, कोड के लिंक और दस्तावेज़ के ऐसे अलग-अलग हिस्से शामिल हैं जो आपके काम आ सकते हैं.

कोडलैब (कोड बनाना सीखना) से जुड़ी समस्याएं/सुझाव/राय/शिकायत

अगर आपको इस कोडलैब के साथ कोई समस्या मिलती है, तो कृपया आवेदन करने से पहले अपनी समस्या का पता लगाएं. खोजने और नई समस्याएं बनाने के लिए लिंक:

माइग्रेशन के लिए संसाधन

यहां दी गई टेबल में, मॉड्यूल 2 (START) और मॉड्यूल 12 (FINISH) के रेपो फ़ोल्डर के लिंक दिए गए हैं. उन्हें सभी App Engine कोडलैब माइग्रेशन के लिए रेपो से भी ऐक्सेस किया जा सकता है, जिसका क्लोन बनाया जा सकता है या किसी ZIP फ़ाइल को डाउनलोड किया जा सकता है.

Codelab

Python 2

Python 3

मॉड्यूल 1

कोड

कोड (इस ट्यूटोरियल में नहीं दिया गया है)

मॉड्यूल 12 (यह कोडलैब)

कोड

कोड

ऑनलाइन रेफ़रंस

नीचे कुछ ऑनलाइन संसाधन दिए गए हैं, जो इस ट्यूटोरियल के लिए काम के हो सकते हैं:

App Engine

Cloud Memorystore और Cloud Datastore

क्लाउड से जुड़ी अन्य जानकारी

वीडियो

लाइसेंस

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