मॉड्यूल 6: Cloud Datastore से Cloud Firestore पर माइग्रेट करना

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

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

Cloud NDB या Cloud Datastore क्लाइंट लाइब्रेरी के साथ Datastore को ऐक्सेस करने वाले App Engine इस्तेमाल करने वाले लोग, आसानी से इस्तेमाल किए जा सकते हैं. उन्हें आगे माइग्रेट करने की ज़रूरत नहीं होती. हालांकि, Cloud Firestore, Firebase रीयल-टाइम डेटाबेस की सुविधाओं के साथ, नया, बढ़ाने लायक, बहुत ज़्यादा उपलब्ध, NoSQL डेटास्टोर दिखाता है.

अगर आप एक डेवलपर हैं और आपको लगता है कि Firebase की सुविधाओं का फ़ायदा लेने के लिए उसका इस्तेमाल करना ज़रूरी नहीं है या आपको यह पता लगाने में काफ़ी दिलचस्पी है कि माइग्रेशन के लिए क्या होगा, तो आप सही जगह पर हैं. इस ट्यूटोरियल में आपको Cloud Datastore का इस्तेमाल करके, Cloud Firestore में App Engine ऐप्लिकेशन को माइग्रेट करने का तरीका बताया गया है.

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

  • Datastore और Firestore के बीच के अंतर पहचानें
  • Cloud Datastore से Cloud Firestore पर माइग्रेट करें

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

सर्वे

इस कोडलैब का इस्तेमाल कैसे किया जाएगा?

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

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

App Engine के Datastore को 2013 में अपना प्रॉडक्ट बन गया था. इसे Google Cloud Datastore के तौर पर जाना जाता है. अब इसे App Engine के बाहर के डेवलपर भी ऐक्सेस कर सकते हैं. अगले साल, Google ने Firebase को खरीद लिया. उस समय, यह अपने रीयल-टाइम डेटाबेस के लिए जाना जाता था.

अगले कुछ सालों में, Firebase और Cloud Datastore की टीमों ने Firebase की कुछ सुविधाओं को Datastore के साथ इंटिग्रेट करने पर काम किया. इस वजह से, 2017 में Cloud Datastore के अगली-पीढ़ी की टेक्नोलॉजी को रिलीज़ किया गया. Firebase की कुछ सुविधाओं को इनहेरिट करने के लिए, इसे Cloud Firestore के तौर पर रीब्रैंड किया गया था.

Cloud Firestore, Google Cloud प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से NoSQL स्टोरेज देने का तरीका बन गया. नए ऐप्लिकेशन, मूल तौर पर Cloud Firestore का इस्तेमाल कर सकते हैं, जबकि मौजूदा Datastore डेटाबेस को Firestore में बदल दिया गया था. अब ये "डेटास्टोर मोड में फ़ायरस्टोर" के तौर पर काम करते हैं ताकि Datastore की कार्रवाइयों के साथ काम करना जारी रखा जा सके. इस वजह से ऐप्लिकेशन, Cloud Firestore को उनमें से किसी एक मोड में ही ऑपरेट कर सकते हैं. एक बार सेट हो जाने के बाद उसे बदला नहीं जा सकता.

फ़िलहाल, जब उपयोगकर्ता नए प्रोजेक्ट बनाते हैं और कोई NoSQL समाधान चुनते हैं, तब उन्हें डेटास्टोर मोड में Firestore या नेटिव मोड में Firestore को चुनने के लिए कहा जाता है. जब उपयोगकर्ता Datastore इकाइयां जोड़ लेते हैं, तब उन्हें Firestore में नहीं बदला जा सकता. इसी तरह, अगर एक बार Firestore का नेटिव मोड चुन लिया जाता है, तो वे फिर से Datastore (या Datastore मोड में Firestore) पर स्विच नहीं कर पाएंगे. ज़्यादा जानकारी के लिए दस्तावेज़ में डेटास्टोर मोड या नेटिव Firestore मोड पेज में Cloud Firestore के बीच चुनने के बारे में पढ़ें. किसी ऐप्लिकेशन को Firestore में माइग्रेट करने के लिए, एक नया प्रोजेक्ट बनाना होगा. इसके बाद, Datastore को एक्सपोर्ट करके Firestore में इंपोर्ट करना होगा. इस ट्यूटोरियल का मकसद डेवलपर को यह बताना है कि Cloud Datastore और Cloud Firestore के इस्तेमाल के बीच क्या अंतर है.

हम उपयोगकर्ताओं से यह माइग्रेशन करने की उम्मीद नहीं करते हैं. इसलिए, इसे माइग्रेट करना ज़रूरी नहीं है. मूल रूप से Cloud Firestore का इस्तेमाल करने के कुछ फ़ायदे हैं, जैसे कि क्लाइंट की पुष्टि, Firebase के नियमों को इंटिग्रेट करना, और Firebase रीयल-टाइम डेटाबेस को इस्तेमाल करने के फ़ायदे. हालांकि, माइग्रेशन के चरण "असुविधाजनक" हैं.

  • आपको अपने मौजूदा ऐप्लिकेशन के प्रोजेक्ट वाले किसी अलग प्रोजेक्ट का इस्तेमाल करना होगा.
  • ऐसा प्रोजेक्ट जिसमें ऐप्लिकेशन ने Datastore इकाइयों को जोड़ा है, उसे नेटिव मोड में Firestore पर स्विच नहीं किया जा सकता
  • इसी तरह, अगर किसी प्रोजेक्ट ने नेटिव मोड में Firestore को चुना है, तो डेटास्टोर मोड में Firebase को वापस नहीं लाया जा सकता.
  • ऐसा कोई माइग्रेशन टूल नहीं है जो डेटा को एक प्रोजेक्ट से दूसरे प्रोजेक्ट में स्ट्रीम कर सके.
  • नेमस्पेस और ज़्यादा लिखने की थ्रूपुट (>10 हज़ार/सेकंड) जैसी कुछ अहम Datastore सुविधाएं, Firestore से उपलब्ध नहीं हैं.
  • एक्सपोर्ट और इंपोर्ट टूल "प्रीमिटिव" हैं और "सभी या कुछ नहीं" .
    • अगर आपके ऐप्लिकेशन में कई Datastore इकाइयां हैं, तो इसे एक्सपोर्ट करने और फिर Firestore में इंपोर्ट करने में कई घंटे लग सकते हैं.
    • इस दौरान, आपका ऐप्लिकेशन/सेवा डेटा लिख/अपडेट नहीं कर सकेगा.
    • माइग्रेशन से जुड़ी गतिविधियों को सामान्य इस्तेमाल में गिना जाएगा; लागत कम करने के लिए, अपनी ज़रूरत के हिसाब से इसे हर दिन के कोटा में बांटा जा सकता है.
    • आपकी नई सेवा किसी दूसरे प्रोजेक्ट में काम करती है. इसलिए, डीएनएस अपडेट लागू करने के लिए आपको एक विंडो की ज़रूरत होगी.
  • Datastore और Firestore के डेटा मॉडल एक जैसे हैं, लेकिन माइग्रेशन के लिए ऐप्लिकेशन/सेवा के काम करने के तरीके को अपडेट करना ज़रूरी है
    • Datastore के एंसेस्टर क्वेरी अब Firestore कलेक्शन क्वेरी हैं (डिफ़ॉल्ट)
    • Datastore से मिलने वाली ब्रॉड टाइप क्वेरी, Firestore कलेक्शन ग्रुप की क्वेरी हैं
    • इंडेक्स और हैंडलिंग का तरीका अलग-अलग है.

हालांकि, अगर आपके पास डेटा को दूसरी जगह भेजने, माइग्रेशन को सिम्युलेट करने की तैयारी करने या डेटा स्टोर बनाम Firestore के बारे में जानकारी पाने के लिए एक आसान ऐप्लिकेशन है, तो कृपया जारी रखें!

Python 2 के उपयोगकर्ता: यह वैकल्पिक माइग्रेशन कोडलैब सिर्फ़ Python 3 में पेश किया गया है. हालांकि, Cloud Firestore 2.x के साथ भी काम करता है, इसलिए उपयोगकर्ता इस्तेमाल में होने वाले अंतरों का अनुमान लगा सकते हैं. एक उदाहरण यह है कि Firestore रिकॉर्ड बाइट स्ट्रिंग के बजाय, यूनिकोड स्ट्रिंग का इस्तेमाल करते हैं, इसलिए Python 2 स्ट्रिंग की लिटरल वैल्यू के लिए, u'' लीडिंग इंंडिकेटर ज़रूरी है. इसका मतलब है कि 2.x store_visit() फ़ंक्शन ऐसा दिखेगा:

def store_visit(remote_addr, user_agent):
    doc_ref = fs_client.collection(u'Visit')
    doc_ref.add({
        u'timestamp': datetime.now(),
        u'visitor': u'{}: {}'.format(remote_addr, user_agent),
    })

इसके अलावा, क्लाइंट लाइब्रेरी भी उसी तरह काम करेगी. सिर्फ़ एक और बात पर ध्यान देने की ज़रूरत है कि 2.x Cloud Firestore लाइब्रेरी "फ़्रोज़न" है जहां तक डेवलपमेंट की बात है, तो अब लगातार बढ़ने वाली ज़्यादा/नई सुविधाएं, सिर्फ़ 3.x Firestore क्लाइंट लाइब्रेरी में उपलब्ध होंगी.

इस माइग्रेशन की प्रोसेस को आगे बढ़ाने के लिए, इस ट्यूटोरियल के मुख्य चरण नीचे दिए गए हैं:

  1. सेटअप/प्रीवर्क
  2. Cloud Firestore लाइब्रेरी जोड़ें
  3. ऐप्लिकेशन फ़ाइलें अपडेट करें

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

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

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

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

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

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

आप अपने या हमारे किसी एक में, मॉड्यूल 3 कोड का इस्तेमाल करके शुरुआत करेंगे. यह मॉड्यूल 6 कोडलैब आपको हर चरण पर ले जाता है. इसके पूरा होने पर, यह FINISH पॉइंट पर कोड की तरह दिखना चाहिए. (यह ट्यूटोरियल सिर्फ़ Python 3 के लिए उपलब्ध है.)

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

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

3. मॉड्यूल 3 ऐप्लिकेशन डिप्लॉय करें

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

  1. gcloud कमांड-लाइन टूल (अगर ज़रूरी हो) का इस्तेमाल करके खुद को फिर से जानें
  2. (अगर ज़रूरी हो, तो मॉड्यूल 3 कोड को App Engine पर फिर से डिप्लॉय करें)

इन चरणों को पूरा करने और इसके काम होने की पुष्टि करने के बाद, हम इस ट्यूटोरियल में कॉन्फ़िगरेशन फ़ाइलों के बारे में बताएंगे.

Python 2 की ज़रूरी शर्तें

  • पक्का करें कि app.yaml (अब भी) तीसरे पक्ष के बंडल किए गए पैकेज को दिखाता है: grpcio और setuptools.
  • पक्का करें कि appengine_config.py अब भी तीसरे पक्ष के संसाधनों पर ऐप्लिकेशन को ले जाने के लिए, pkg_resources और google.appengine.ext.vendor का इस्तेमाल करता है.
  • requirements.txt को अपडेट करने वाले अगले सेक्शन में, आपको google-cloud-firestore==1.9.0 का इस्तेमाल करना होगा, क्योंकि यह Python Firestore क्लाइंट लाइब्रेरी का आखिरी 2.x के साथ काम करने वाला वर्शन है.
    • अगर आपके requirements.txt में google-cloud-core के लिए एंट्री है, तो उसे वैसा ही रहने दें.
    • lib को मिटाएं और pip install -t lib -r requirements.txt की मदद से फिर से इंस्टॉल करें.

4. कॉन्फ़िगरेशन फ़ाइलें अपडेट करें (Cloud Firestore लाइब्रेरी जोड़ें)

सेटअप के बाद, ऐप्लिकेशन फ़ाइलों के बाद कॉन्फ़िगरेशन को अपडेट करना ज़रूरी है. पहले कॉन्फ़िगरेशन में, सिर्फ़ आपकी requirements.txt फ़ाइल में पैकेज की अदला-बदली करना ही एक छोटा सा बदलाव है. इसलिए, अब इसे करते हैं.

requirements.txt में google-cloud-datastore लाइन को google-cloud-firestore से बदलें, ताकि वह ऐसा दिखे:

Flask==1.1.2
google-cloud-firestore==2.0.2

हमारा सुझाव है कि आप हर लाइब्रेरी के सबसे नए वर्शन इस्तेमाल करें; ऊपर दी गई वर्शन की संख्या, यह लिखते समय सबसे नई है. FINISH रेपो फ़ोल्डर के कोड को बार-बार अपडेट किया जाता है. इसका वर्शन भी अपडेट हो सकता है.

कॉन्फ़िगरेशन में कोई अन्य बदलाव नहीं है. इसलिए, app.yaml और templates/index.html में कोई बदलाव नहीं हुआ है.

5. ऐप्लिकेशन फ़ाइलें अपडेट करें

सिर्फ़ एक ऐप्लिकेशन फ़ाइल main.py है, इसलिए इस सेक्शन में किए गए सभी बदलाव सिर्फ़ उस फ़ाइल पर असर डालेंगे.

1. आयात

पैकेज इंपोर्ट को datastore से firestore में करना मामूली बदलाव है:

  • पहले:
from google.cloud import datastore
  • इसके बाद:
from google.cloud import firestore

2. Firestore का ऐक्सेस

Flusk शुरू करने के बाद, अपना Firestore क्लाइंट बनाएं. जैसा ऊपर बताया गया है, वैसे ही बदलाव करें. हालांकि, क्लाइंट को शुरू करने के लिए ऐसा ही करें:

  • पहले:
app = Flask(__name__)
ds_client = datastore.Client()
  • इसके बाद:
app = Flask(__name__)
fs_client = firestore.Client()

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

Datastore के लिए, फ़िल्टर और क्रम से लगाने की शर्तों के साथ-साथ, इकाई के टाइप के आधार पर क्वेरी की जा सकती हैं. Firestore के लिए डेटा क्वेरी करना एक जैसा ही है. मान लीजिए कि क्वेरी की ये वैल्यू, क्लाइंट (ds_client या fs_client), और इंपोर्ट हैं:

from datetime import datetime
from firestore.Query import DESCENDING

OCT1 = datetime(2020, 10, 1)
LIMIT = 10

Datastore के लिए, सबसे हाल ही की Visit इकाइयों के लिए, 1 अक्टूबर, 2020 के बाद की दस इकाइयों के लिए घटते क्रम में क्वेरी करते हैं:

query = ds_client.query(kind='Visit')
query.add_filter('timestamp', '>=', datetime(2020, 10, 1))
query.order = ['-timestamp']
return query.fetch(limit=LIMIT)

Visit कलेक्शन से, Firestore के लिए भी ऐसा ही करना:

query = fs_client.collection('Visit')
query.where('timestamp', '>=', datetime(2020, 10, 1))
query.order_by('timestamp', direction=DESCENDING)
return query.limit(LIMIT).stream()

ऐप्लिकेशन क्वेरी का सैंपल आसान होता है (इसमें "WHERE" क्लॉज़ नहीं होता). समीक्षा के लिए, यहां Cloud Datastore कोड दिया गया है:

  • पहले:
def store_visit(remote_addr, user_agent):
    entity = datastore.Entity(key=ds_client.key('Visit'))
    entity.update({
        'timestamp': datetime.now(),
        'visitor': '{}: {}'.format(remote_addr, user_agent),
    })
    ds_client.put(entity)

def fetch_visits(limit):
    query = ds_client.query(kind='Visit')
    query.order = ['-timestamp']
    return query.fetch(limit=limit)

Firestore पर माइग्रेट करने पर, आपको इकाइयों और क्वेरी से मिलते-जुलते नए दस्तावेज़ बनाने का विकल्प मिलेगा, जैसा कि पहले दिखाया गया है.

  • इसके बाद:
def store_visit(remote_addr, user_agent):
    doc_ref = fs_client.collection('Visit')
    doc_ref.add({
        'timestamp': datetime.now(),
        'visitor': '{}: {}'.format(remote_addr, user_agent),
    })

def fetch_visits(limit):
    visits_ref = fs_client.collection('Visit')
    visits = (v.to_dict() for v in visits_ref.order_by('timestamp',
            direction=firestore.Query.DESCENDING).limit(limit).stream())
    return visits

मुख्य फ़ंक्शन root(), index.html टेंप्लेट फ़ाइल जैसा ही रहता है. अपने बदलावों की दोबारा जांच करें, सेव करें, डिप्लॉय करें, और पुष्टि करें.

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

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

gcloud app deploy के साथ अपने ऐप्लिकेशन को फिर से डिप्लॉय करें और पक्का करें कि ऐप्लिकेशन काम कर रहा हो. आपका कोड अब मॉड्यूल 6 रेपो में दिए गए कोड से मेल खाना चाहिए (या अगर आपकी पसंद है, तो 2.x वर्शन).

अगर आपने कोई भी पिछले कोडलैब का इस्तेमाल किए बिना इस सीरीज़ में शामिल होना शुरू कर दिया है, तो ऐप्लिकेशन में कोई बदलाव नहीं होगा; यह मुख्य वेब पेज (/) पर की जाने वाली सभी विज़िट को रजिस्टर कर लेता है. साथ ही, जब आप साइट पर कई बार आ चुके होते हैं, तो यह ऐसा दिखता है:

विज़िटमी ऐप्लिकेशन

मॉड्यूल 6 पर माइग्रेट करने की इस वैकल्पिक प्रक्रिया को पूरा करने के लिए बधाई. App Engine के डेटा का स्टोरेज जितना सटीक हो उतना डेटा माइग्रेट करने की कोशिश की जा सकती है. हालांकि, यह सिर्फ़ एक विकल्प है. अगर आपने पहले से ऐसा नहीं किया है, तो अपने ऐप्लिकेशन को Cloud Run के लिए कंटेनर बनाने की कोशिश करें. इसके लिए, नीचे लिंक किए गए मॉड्यूल 4 और 5 के कोडलैब देखें.

ज़रूरी नहीं: स्टोरेज खाली करें

जब तक आप अगले माइग्रेशन कोडलैब पर जाने के लिए तैयार नहीं हो जाते, तब तक बिलिंग से बचने के लिए क्लीन अप करने के बारे में क्या करें? मौजूदा डेवलपर के तौर पर, आपको App Engine की कीमत की जानकारी के बारे में अप-टू-डेट जानकारी है.

ज़रूरी नहीं: ऐप्लिकेशन बंद करना

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

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

अगले चरण

इस ट्यूटोरियल के अलावा, कई अन्य माइग्रेशन मॉड्यूल कोडलैब हैं जिनका इस्तेमाल किया जा सकता है:

  • मॉड्यूल 7: App Engine पुश टास्क की सूचियां (अगर आप [push] टास्क की सूची का इस्तेमाल करते हैं, तो यह ज़रूरी है)
    • मॉड्यूल 1 ऐप्लिकेशन में App Engine taskqueue पुश टास्क जोड़ता है
    • उपयोगकर्ताओं को मॉड्यूल 8 में, Cloud Tasks पर माइग्रेट करने के लिए तैयार करता है
  • मॉड्यूल 4: Docker के साथ क्लाउड रन पर माइग्रेट करें
    • Docker के साथ Cloud Run पर चलाने के लिए, अपने ऐप्लिकेशन को कंटेनर में रखें
    • यह माइग्रेशन आपको Python 2 पर बने रहने की अनुमति देता है.
  • मॉड्यूल 5: Cloud Buildpack के साथ Cloud Run पर माइग्रेट करना
    • Cloud Buildpack की मदद से, अपने ऐप्लिकेशन को Cloud Run पर चलाने के लिए कंटेनर बनाएं
    • आपको Docker, कंटेनर या Dockerfile के बारे में कुछ भी जानने की ज़रूरत नहीं है.
    • यह ज़रूरी है कि आपका ऐप्लिकेशन पहले से Python 3 पर माइग्रेट किया गया हो (Buildpack Python 2 के साथ काम नहीं करते)

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

App Engine माइग्रेशन मॉड्यूल कोडलैब से जुड़ी समस्याएं/सुझाव

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

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

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

Codelab

Python 2

Python 3

मॉड्यूल 3

(कोड)

कोड

मॉड्यूल 6

(लागू नहीं)

कोड

App Engine के संसाधन

इस खास माइग्रेशन से जुड़े अतिरिक्त संसाधन नीचे दिए गए हैं: