1. Genel Bakış
Bu codelab'lerden oluşan bu seri, Google App Engine (standart ortam) geliştiricilerinin bir dizi taşıma işleminde rehberlik ederek uygulamalarını modernleştirmelerine yardımcı olmayı amaçlamaktadır. En önemli adım, çalışma zamanında paket haline getirilmiş orijinal hizmetlerden uzaklaşmaktır. Bunun nedeni, yeni nesil çalışma zamanlarının daha esnek olması ve kullanıcılara daha fazla hizmet seçeneği sunmasıdır. Daha yeni nesil çalışma zamanına geçmek, Google Cloud ürünleriyle daha kolay entegrasyon yapmanızı, daha geniş bir desteklenen hizmet yelpazesinden yararlanmanızı ve mevcut dil sürümlerini desteklemenizi sağlar.
Bu isteğe bağlı eğitim, geliştiricilere Datastore hizmetiyle konuşmak için istemci kitaplığı olarak Cloud NDB'den Cloud Datastore'a nasıl geçiş yapılacağını gösterir. NDB'yi tercih eden geliştiriciler, Python 3 uyumlu olduğundan kullanmaya devam edebilirler. Bu nedenle, bu taşıma işlemi isteğe bağlıdır. Bu taşıma işlemi yalnızca halihazırda Cloud Datastore kullanan diğer uygulamalarla tutarlı bir kod tabanı ve paylaşılan kitaplıklar oluşturmak isteyen kullanıcılar içindir. Bu, "Arka Plan"da açıklanmaktadır. bölümüne ekleyin.
Neler öğreneceksiniz?
- Cloud NDB'yi kullanma (hakkında bilginiz yoksa)
- Cloud NDB'den Cloud Datastore'a taşıma
- Uygulamanızı Python 3'e taşıma
Gerekenler
- Etkin bir GCP faturalandırma hesabı olan bir Google Cloud Platform projesi
- Temel Python becerileri
- Temel Linux komutlarıyla ilgili bilgi sahibi olma
- App Engine uygulamaları geliştirme ve dağıtmayla ilgili temel bilgiler
- Çalışan bir Modül 2 App Engine 2.x veya 3.x uygulaması.
Anket
Bu codelab'i nasıl kullanacaksınız?
2. Arka plan
Cloud NDB, uzun süreli App Engine geliştiricileri için muhteşem bir Datastore çözümü olsa da Python 3'e geçişe yardımcı olmakla birlikte App Engine geliştiricilerinin Datastore'a erişebilmesi için tek yöntem bu değildir. App Engine'in Datastore'u 2013'te kendi ürünü olarak Google Cloud Datastore'a gelince, tüm kullanıcıların Datastore'u kullanabilmesi için yeni bir istemci kitaplığı oluşturuldu.
Python 3 App Engine ve App Engine dışındaki geliştiriciler, Cloud Datastore'u kullanmaya (Cloud NDB'ye değil) yönlendirilir. Python 2 App Engine geliştiricilerinin ndb
'den Cloud NDB'ye ve oradan Python 3'e bağlantı noktası oluşturmaları önerilir. Ancak Cloud Datastore'a daha fazla geçiş yapmayı da tercih edebilirler. Bu, özellikle az önce bahsedilenler gibi Cloud Datastore'u kullanan koda sahip olan ve tüm uygulamalarında paylaşılan kitaplıklar oluşturmak isteyen geliştiriciler için mantıklı bir karardır. Kodun yeniden kullanımı, kod tutarlılığı kadar bir en iyi uygulamadır ve her ikisi de aşağıda özetlendiği gibi genel bakım maliyetinin azalmasına katkıda bulunur:
Cloud NDB'den Cloud Datastore'a taşıma
- Geliştiricilerin Datastore erişimi için tek bir kod tabanına odaklanmasını sağlar
- Bazı kodları Cloud NDB, diğerlerini ise Cloud Datastore kullanarak muhafaza etme
- Kod tabanında daha fazla tutarlılık ve daha iyi kodun yeniden kullanılabilirliği sağlar.
- Genel/paylaşılan kitaplıkların daha düşük genel bakım maliyetine katkıda bulunmasını sağlar.
Bu taşıma işlemi aşağıdaki birincil adımları içerir:
- Kurulum/Ön Çalışma
- Cloud NDB'yi Cloud Datastore istemci kitaplıklarıyla değiştirme
- Uygulamayı güncelle
3. Kurulum/Ön Çalışma
Eğiticinin ana bölümüne geçmeden önce projemizi oluşturalım, kodu alın ve sonra çalışan kodla başladığımızı öğrenmemiz için temel uygulamayı dağıtalım.
1. Proje oluşturun
Modül 2 codelab'ini tamamladıysanız aynı projeyi (ve kodu) yeniden kullanmanızı öneririz. Alternatif olarak, yeni bir proje oluşturabilir veya mevcut başka bir projeyi yeniden kullanabilirsiniz. Projenin etkin bir faturalandırma hesabı olduğundan ve App Engine'in (uygulamanın) etkin olduğundan emin olun.
2. Temel örnek uygulamayı al
Ön koşullardan biri, çalışan bir Modül 2 örnek uygulamasına sahip olmaktır. Bu eğiticiyi tamamladıysanız çözümünüzü kullanın. Hemen tamamlayabilirsiniz (bağlantıyı yukarıdaki bağlantıda) veya atlamak isterseniz Modül 2 deposunu kopyalayın (bağlantıyı aşağıda bulabilirsiniz).
İster sizin ister bizimkininkini kullanın, Modül 2 kodunu BAŞLAyeceğiz. Bu Modül 3 codelab'i, her adımda size yol gösterir. Tamamlandığında, FINISH noktasındaki koda benzeyecektir. Bu eğiticinin Python 2 ve 3 sürümü mevcuttur. Bu nedenle aşağıdan doğru kod deposunu bulun.
Python 2
- START: Modül 2 kodu
- FINISH: Modül 3 kodu
- Deponun tamamı (ZIP dosyasını klonlamak veya indirmek için)
Python 2 Modül 2 BAŞLANGIÇ dosyalarının dizini (sizin ya da bizimki) şöyle görünmelidir:
$ ls
README.md appengine_config.py requirements.txt
app.yaml main.py templates
Modül 2 eğiticisini tamamladıysanız Flask ve bağımlılıklarını içeren bir lib
klasörünüz de olacaktır. lib
klasörünüz yoksa sonraki adımda bu temel uygulamayı dağıtabilmemiz için klasörü pip install -t lib -r requirements.txt
komutuyla oluşturun. Cihazınızda hem Python 2 hem de 3 yüklüyse Python 3 ile ilgili karışıklığı önlemek için pip
yerine pip2
kullanmanızı öneririz.
Python 3
- BAŞLANGIÇ: Modül 2 depo
- FINISH: Modül 3 depo
- Deponun tamamı (ZIP dosyasını klonlamak veya indirmek için)
Python 3 Modül 2 BAŞLANGIÇ dosyalarının dizini (sizin ya da bizimki) şöyle görünmelidir:
$ ls
README.md main.py templates
app.yaml requirements.txt
Python 3 için lib
ve appengine_config.py
kullanılmaz.
3. (Yeniden) Modül 2 uygulamasını dağıtın
Hemen yürütmek için kalan ön çalışma adımlarınız:
gcloud
komut satırı aracını (gerekirse) yeniden tanıyın- (Gerekiyorsa) Modül 1 kodunu App Engine'e dağıtın (yeniden)
Bu adımları başarıyla uygulayıp çalışır durumda olduğunu onayladıktan sonra, yapılandırma dosyalarından başlayarak bu eğiticide ilerleyeceğiz.
4. Cloud NDB'yi Cloud Datastore istemci kitaplıklarıyla değiştirme
Tek yapılandırma değişikliği, requirements.txt
dosyanızdaki küçük paket değişikliğidir.
1. requirements.txt
öğelerini güncelle
2. Modül'ü tamamladıktan sonra requirements.txt
dosyanız şu şekilde görünür:
- ÖNCE (Python 2 ve 3):
Flask==1.1.2
google-cloud-ndb==1.7.1
requirements.txt
uygulamasını, Cloud NDB kitaplığını (google-cloud-ndb
) Cloud Datastore kitaplığının en yeni sürümüyle (google-cloud-datastore
) değiştirerek ve Flask girişini koruyarak güncelleyin. Cloud Datastore'un Python 2 ile uyumlu son sürümünün 1.15.3 olduğunu da göz önünde bulundurun:
- SONRA (Python 2):
Flask==1.1.2
google-cloud-datastore==1.15.3
- SONRA (Python 3):
Flask==1.1.2
google-cloud-datastore==2.1.0
Deponun bu eğitime kıyasla daha düzenli bir şekilde yönetildiğini unutmayın. Bu nedenle, requirements.txt
dosyasının daha yeni sürümleri yansıtıyor olabilir. Her kitaplığın en son sürümlerini kullanmanızı öneririz, ancak bu sürümler çalışmıyorsa daha eski bir sürüme geri dönebilirsiniz. Yukarıdaki sürüm numaraları, bu codelab'in en son güncellendiğinde en son ne zaman güncellendiğini gösterir.
2. Diğer yapılandırma dosyaları
Diğer yapılandırma dosyaları (app.yaml
ve appengine_config.py
) önceki taşıma adımında olduğu gibi kalmalıdır:
app.yaml
, üçüncü tarafların gruplandırılmışgrpcio
vesetuptools
paketlerine (hâlâ referans vermelidir).appengine_config.py
(hâlâ)pkg_resources
vegoogle.appengine.ext.vendor
öğelerinilib
bölgesindeki üçüncü taraf kaynaklarına yönlendirmelidir.
Şimdi uygulama dosyalarına geçelim.
5. Uygulama dosyalarını güncelle
template/index.html
bölümünde değişiklik yok, ancak main.py
için birkaç güncelleme var.
1. İçe aktarılanlar
İçe aktarma bölümü için başlangıç kodu aşağıdaki gibi görünmelidir:
- ÖNCE:
from flask import Flask, render_template, request
from google.cloud import ndb
google.cloud.ndb
içe aktarma işlemini, Cloud Datastore için bir içe aktarma işlemiyle değiştirin: google.cloud.datastore
. Datastore istemci kitaplığı, bir Varlık içinde zaman damgası alanının otomatik olarak oluşturulmasını desteklemediğinden manuel olarak bir zaman damgası oluşturmak için standart kitaplık datetime
modülünü içe aktarın. Kural olarak, standart kitaplık içe aktarmaları üçüncü taraf paket içe aktarmalarının üstündedir. Bu değişiklikleri tamamladığınızda, kod aşağıdaki gibi görünmelidir:
- SONRASI:
from datetime import datetime
from flask import Flask, render_template, request
from google.cloud import datastore
2. Başlatma ve veri modeli
Flask başlatıldıktan sonra Modül 2 örnek uygulaması, NDB veri modeli sınıfı ve alanları şu şekilde oluşturulur:
- ÖNCE:
app = Flask(__name__)
ds_client = ndb.Client()
class Visit(ndb.Model):
visitor = ndb.StringProperty()
timestamp = ndb.DateTimeProperty(auto_now_add=True)
Cloud Datastore kitaplığında böyle bir sınıf yok. Bu nedenle Visit
sınıf bildirimini silin. Datastore ile konuşmak için hâlâ bir istemciye ihtiyacınız var. Bu nedenle, ndb.Client()
değerini datastore.Client()
olarak değiştirin. Datastore kitaplığı daha "esnek" ve "önceden beyan etmeden" Varlıklar oluşturmanıza olanak tanır. daha fazla bilgi edineceksiniz. Bu güncellemeden sonra main.py
uygulamasının bu bölümü şöyle görünecek:
- SONRASI:
app = Flask(__name__)
ds_client = datastore.Client()
3. Datastore erişimi
Cloud Datastore'a geçiş yapmak için Datastore varlıklarını oluşturma, depolama ve sorgulama şeklinizin (kullanıcı düzeyinde) değiştirilmesi gerekir. Uygulamalarınız için bu taşımanın zorluğu, Datastore kodunuzun ne kadar karmaşık olduğuna bağlıdır. Örnek uygulamamızda güncellemeyi olabildiğince basit hale getirmeye çalıştık. Başlangıç kodumuz:
- ÖNCE:
def store_visit(remote_addr, user_agent):
with ds_client.context():
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
def fetch_visits(limit):
with ds_client.context():
return (v.to_dict() for v in Visit.query().order(
-Visit.timestamp).fetch_page(limit)[0])
Cloud Datastore ile, Varlıkınızdaki gruplandırılmış nesneleri bir "anahtar" ile tanımlayan genel bir varlık oluşturun. Veri kaydını, anahtar/değer çiftlerinin JSON nesnesiyle (Python dict
) oluşturun, ardından beklenen put()
ile Datastore'a yazın. Datastore ile sorgulama benzer ancak daha basittir. Burada eşdeğer Datastore kodunun farkını görebilirsiniz:
- SONRASI:
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)
store_visit()
ve fetch_visits()
için işlev gövdelerini yukarıdaki sürümle aynı şekilde güncelleyin. root()
adlı ana işleyicide herhangi bir değişiklik yok. Bu değişiklikler tamamlandıktan sonra uygulamanız artık Cloud Datastore'u kullanacak şekilde donatılmış ve teste hazır hale gelmiştir.
6. Özet/Temizlik
Uygulamayı dağıtma
Uygulamanızı gcloud app deploy
ile yeniden dağıtın ve uygulamanın çalıştığını onaylayın. Kodunuz artık Modül 3 depo klasörlerinde bulunanlarla eşleşmelidir:
Bu seriye, önceki codelab'lerden herhangi birini gerçekleştirmeden başladıysanız uygulamanın kendisi değişmez. ana web sayfasına (/
) yapılan tüm ziyaretleri kaydeder ve siteyi yeteri kadar kez ziyaret ettiğinizde aşağıdaki gibi görünür:
3. Modül codelab'ini tamamladığınız için tebrikler. Artık Datastore'a erişmek için hem Cloud NDB hem de Cloud Datastore istemci kitaplıklarını kullanabileceğinizi biliyorsunuz. İkinci sürüme geçerek paylaşılan kitaplıklar, ortak kod ve kod yeniden kullanımı gibi avantajlardan yararlanabilir, böylece tutarlılık ve daha düşük bakım maliyeti elde edebilirsiniz.
İsteğe bağlı: Temizleme
Bir sonraki taşıma codelab'ine geçmeye hazır olana kadar faturalandırılmamak için temizlik yapmaya ne dersiniz? Mevcut geliştiriciler olarak muhtemelen App Engine'in fiyatlandırma bilgileri konusunda yeterince bilgi sahibisinizdir.
İsteğe bağlı: Uygulamayı devre dışı bırakma
Henüz bir sonraki eğitime geçmeye hazır değilseniz sizden ücret alınmasını önlemek için uygulamanızı devre dışı bırakın. Bir sonraki codelab'e geçmeye hazır olduğunuzda projeyi yeniden etkinleştirebilirsiniz. Uygulamanız devre dışı bırakıldığında ücretlendirilecek trafik almazsınız ancak ücretsiz kotayı aşarsanız Datastore kullanımınız için faturalandırılabilirsiniz. Bu nedenle, bu sınırın altına düşecek kadar silin.
Öte yandan, taşıma işlemine devam etmeyecekseniz ve her şeyi tamamen silmek istiyorsanız projenizi kapatabilirsiniz.
Sonraki adımlar
Burada, sonraki taşıma modüllerini inceleyebilirsiniz:
- Modül 3 Bonusu: Python 3 ve yeni nesil App Engine çalışma zamanına nasıl bağlantı kuracağınızı öğrenmek için bonus bölümüne devam edin.
- 7. Modül: App Engine Aktarma Görev Sıraları ([push] Görev Sıraları kullanıyorsanız gereklidir)
- 1. Modül uygulamasına App Engine
taskqueue
aktarma görevleri ekler - Kullanıcıları Modül 8'de Cloud Tasks'a taşıma işlemi için hazırlar
- 1. Modül uygulamasına App Engine
- 4. Modül: Docker ile Cloud Run'a Geçiş
- Docker ile Cloud Run'da çalışması için uygulamanızı container mimarisine alın
- Python 2'de kalmanızı sağlar
- 5. Modül: Cloud Buildpacks ile Cloud Run'a Geçiş
- Cloud Buildpacks ile uygulamanızı Cloud Run'da çalıştırmak için container mimarisine alın
- Docker, container'lar veya
Dockerfile
hakkında bilgi sahibi olmanıza gerek yoktur - Uygulamanızı Python 3'e taşımış olmanız gerekir
- 6. Modül: Cloud Firestore'a geçiş
- Firebase özelliklerine erişmek için Cloud Firestore'a geçiş yapın
- Cloud Firestore, Python 2'yi desteklese de bu codelab yalnızca Python 3'te kullanılabilir.
7. BONUS: Python 3'e taşıyın
En yeni App Engine çalışma zamanına ve özelliklerine erişmek için Python 3'e geçmenizi öneririz. Örnek uygulamamızda, Datastore kullandığımız tek dahili hizmetti. ndb
ürününden Cloud NDB'ye geçiş yaptığımız için artık App Engine'in Python 3 çalışma zamanına bağlantı verebiliriz.
Genel Bakış
Python 3'e bağlantı oluşturma işlemi, Google Cloud eğitimi kapsamında değildir. Bununla birlikte codelab'in bu bölümü, geliştiricilere Python 3 App Engine çalışma zamanının farklılıkları hakkında fikir verir. Yeni nesil çalışma zamanının olağanüstü özelliklerinden biri, üçüncü taraf paketlerine erişimin kolaylaştırılmasıdır: app.yaml
ürününde yerleşik paketler belirtmeye veya yerleşik olmayan kitaplıkları kopyalama ya da yüklemeye gerek yoktur; requirements.txt
içinde listelenmeleri için dolaylı olarak yüklenirler.
Örneğimiz çok temel ve Cloud Datastore'un Python 2-3 uyumlu olması nedeniyle hiçbir uygulama kodunun 3.x'e açıkça bağlanması gerekmez: Uygulama, değiştirilmemiş 2.x ve 3.x sürümlerinde çalışır. Dolayısıyla, bu durumda yalnızca gerekli değişiklikler yapılandırmadadır:
app.yaml
yönergesini, Python 3'e referans verecek ve paket halinde sunulan üçüncü taraf kitaplıkların referansını kaldıracak şekilde basitleştirin.- Artık gerekli olmadığı için
appengine_config.py
velib
klasörünü silin.
main.py
ve templates/index.html
uygulama dosyalarında değişiklik yapılmadı.
requirements.txt
öğelerini güncelle
Python 2'yi destekleyen Cloud Datastore'un son sürümü 1.15.3'tür. requirements.txt
dosyasını Python 3 için en son sürümle güncelleyin (artık daha yeni bir sürüm olabilir). Bu eğitim yazıldığında en son sürüm 2.1.0 idi. Bu nedenle, ilgili satırı aşağıdaki gibi (veya en son sürümü) görünecek şekilde düzenleyin:
google-cloud-datastore==2.1.0
app.yaml
basitleştirin
ÖNCE:
Bu örnek uygulamada yapılacak tek değişiklik, app.yaml
uygulamasının önemli ölçüde kısaltılmasıdır. 3. Modül'ün bitimindeapp.yaml
döneminde yaptıklarımız:
runtime: python27
threadsafe: yes
api_version: 1
handlers:
- url: /.*
script: main.app
libraries:
- name: grpcio
version: 1.0.0
- name: setuptools
version: 36.6.0
SONRASI:
Python 3'te threadsafe
, api_version
ve libraries
yönergelerinin tamamı kullanımdan kaldırılmıştır; tüm uygulamaların iş parçacığı güvenli olduğu varsayılır ve api_version
Python 3'te kullanılmaz. Artık App Engine hizmetlerine önceden yüklenmiş yerleşik üçüncü taraf paketleri olmadığından libraries
desteği de sonlandırılmıştır. Bu değişiklikler hakkında daha fazla bilgi edinmek için app.yaml
ile ilgili değişikliklerle ilgili dokümanları inceleyin. Sonuç olarak, app.yaml
içinden üçünü de silip desteklenen bir Python 3 sürümüne güncellemeniz gerekir (aşağıya bakın).
İsteğe bağlı: handlers
yönergesinin kullanımı
Ayrıca, App Engine uygulamalarındaki trafiği yönlendiren handlers
yönergesi de kullanımdan kaldırılmıştır. Yeni nesil çalışma zamanında, uygulama yönlendirmesi için web çerçevelerinin kullanılmasını beklediği için tüm "işleyici komut dosyaları" "auto
" olarak değiştirilmelidir. Yukarıdaki değişiklikleri birleştirdiğinizde şu app.yaml
elde edersiniz:
runtime: python38
handlers:
- url: /.*
script: auto
script: auto
hakkında daha fazla bilgiyi app.yaml
referans sayfasından edinebilirsiniz.
handlers
yönergesi kaldırılıyor
handlers
desteği sonlandırıldığından, tek satır app.yaml
bırakarak da bölümün tamamını kaldırabilirsiniz:
runtime: python38
Varsayılan olarak bu işlem, tüm uygulamalar için kullanılabilen Gunicorn WSGI web sunucusunu başlatır. gunicorn
hakkında bilginiz varsa temel app.yaml
temelleriyle başlatıldığında varsayılan olarak çalıştırılan komut şudur:
gunicorn main:app --workers 2 -c /config/gunicorn.py
İsteğe bağlı: entrypoint
yönergesinin kullanımı
Bununla birlikte, uygulamanız belirli bir başlangıç komutu gerektiriyorsa, entrypoint
yönergesiyle belirtilebilir ve sonuçta app.yaml
aşağıdaki gibi görünür:
runtime: python38
entrypoint: python main.py
Bu örnekte özellikle gunicorn
yerine Flask geliştirme sunucusunun kullanılması istenmektedir. Geliştirme sunucusunu başlatan kodun, main.py
alt kısmına şu küçük bölüm eklenerek 8080 numaralı bağlantı noktasındaki 0.0.0.0
arayüzünde başlatılması için uygulamanıza da eklenmesi gerekir:
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)
entrypoint
hakkında daha fazla bilgiyi app.yaml
referans sayfasından edinebilirsiniz. Daha fazla örnek ve en iyi uygulama için App Engine standart ortamı başlangıç belgelerine ve App Engine esnek ortamı başlangıç dokümanlarına bakabilirsiniz.
appengine_config.py
ve lib
alanlarını sil
appengine_config.py
dosyasını ve lib
klasörünü silin. App Engine, Python 3'e geçiş yaparken requirements.txt
üzerinde listelenen paketleri edinir ve yükler.
appengine_config.py
yapılandırma dosyası, ister kendiniz kopyalamış olun ister App Engine sunucularında zaten bulunan (yerleşik) mevcut olanları kullanın, üçüncü taraf kitaplıklarını/paketlerini tanımak için kullanılır. Python 3'e geçiş yapılan büyük değişikliklerin özetini aşağıda bulabilirsiniz:
- Kopyalanan üçüncü taraf kitaplıkların paketlenmesine izin verilmez (
requirements.txt
içinde listelenmiştir) lib
klasöründepip install
yok, yanilib
klasör dönemi yokapp.yaml
ürününde yerleşik üçüncü taraf kitaplık girişleri yok- Uygulamanın üçüncü taraf kitaplıklara referansta bulunması gerekmez, bu nedenle
appengine_config.py
dosyası gerekmez
requirements.txt
ürününde gerekli tüm üçüncü taraf kitaplıklarının listelenmesi yeterlidir.
Uygulamayı dağıtma
Çalıştığından emin olmak için uygulamanızı yeniden dağıtın. Çözümünüzün Modül 3 örnek Python 3 koduna ne kadar yakın olduğunu da onaylayabilirsiniz. Python 2 ile arasındaki farkları görselleştirmek için kodu Python 2 sürümüyle karşılaştırın.
3. Modül'deki bonus adımı tamamladığınız için tebrikler. Python 3 çalışma zamanı için yapılandırma dosyalarını hazırlama hakkındaki belgeleri inceleyin. Son olarak, sonraki adımlar ve temizlik için yukarıdaki önceki özeti inceleyin.
Başvurunuzu hazırlama
Uygulamanızı taşıma zamanı geldiğinde main.py
ve diğer uygulama dosyalarınızı 3.x'e taşımanız gerekecektir. Dolayısıyla, en iyi uygulama, 2.x uygulamanızı "ilerisel uyumlu" hale getirmek için elinizden gelenin en iyisini yapmaktır. yardımcı olabilirsiniz.
Bunu başarmanıza yardımcı olacak birçok online kaynak vardır, ancak önemli ipuçlarından bazıları şunlardır:
- Tüm uygulama bağımlılıklarının tamamen 3.x ile uyumlu olduğundan emin olun
- Uygulamanızın en az 2.6 (tercihen 2.7) sürümünde çalıştığından emin olun.
- Uygulamanın test paketinin tamamını (ve minimum% 80 kapsamı) geçmesini sağlama
six
, Future ve/veya Modernize gibi uyumluluk kitaplıklarını kullanın- Geriye dönük olarak uyumsuz olan 2.x ve 3.x farklılıkları konusunda kendinizi eğitin
- Herhangi bir G/Ç, muhtemelen Unicode ve bayt dizesi uyumsuzluklarına yol açacaktır
Örnek uygulama, tüm bunlar göz önünde bulundurularak tasarlanmıştır. Bu nedenle uygulama kullanıma hazır olarak 2.x ve 3.x sürümünde çalışır. Bu sayede yeni nesil platformu kullanmak için nelerin değiştirilmesi gerektiğini size gösterebiliriz.
8. Ek kaynaklar
App Engine taşıma modülü codelab'leri ile ilgili sorunlar/geri bildirimler
Bu codelab'de herhangi bir sorun bulursanız lütfen göndermeden önce sorununuzu arayın. Arama ve yeni sayı oluşturma bağlantıları:
Taşıma kaynakları
Modül 2 (START) ve Modül 3 (FINISH) için depo klasörlerinin bağlantılarını aşağıdaki tabloda bulabilirsiniz. Bu dosyalara tüm App Engine taşıma işlemleri için depodan da erişilebilir. Bu depoyu klonlayabilir veya ZIP dosyası indirebilirsiniz.
Codelab | Python 2 | Python 3 |
3. Modül |
App Engine kaynakları
Bu taşıma işlemiyle ilgili ek kaynaklar aşağıda verilmiştir:
- Python Cloud NDB ve Cloud Datastore referansları
- Python 3 ve GAE yeni nesil çalışma zamanına geçiş
- Genel