1. Genel Bakış
Bu codelab'lerden oluşan bu seri, Google App Engine (Standart) 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 eğitimde, App Engine'in yerleşik ndb
(Next Veritabanı) istemci kitaplığından Cloud NDB istemci kitaplığına nasıl geçiş yapabileceğinizi öğrenebilirsiniz.
Neler öğreneceksiniz?
- App Engine
ndb
kitaplığını kullanma (konuya aşina değilseniz) ndb
ürününden Cloud NDB'ye geçiş- Uygulamanızı Python 3'e taşıma
Gerekenler
- Şu özelliklere sahip bir Google Cloud Platform projesi:
- Temel Python becerileri
- Yaygın Linux komutlarıyla ilgili bilgi
- App Engine uygulamalarını geliştirme ve dağıtma ile ilgili temel bilgiler
- Çalışan bir Modül 1 App Engine uygulaması
Anket
Bu codelab'i nasıl kullanacaksınız?
2. Arka plan
1. Modül'de web çerçevelerini App Engine'in yerleşik webapp2
ürününden Flask'a taşıdık. Bu codelab'de, App Engine'in ndb
kitaplığından Google Cloud NDB'ye geçerek App Engine'in yerleşik hizmetlerinden uzaklaşmaya devam edeceğiz.
Bu taşıma işlemini tamamlayarak şunları yapabilirsiniz:
- Python 3'e ve yeni nesil App Engine çalışma zamanına geçiş yapın
- Cloud Datastore'a taşıma (App Engine dışı uygulamalar için istemci kitaplığı)
- Python 2 (veya 3) uygulamanızı Container mimarisine alın ve Cloud Run'a geçiş yapın
- App Engine (push) görev sıralarının kullanımını ekleyip Cloud Tasks'a taşıma
Ancak henüz o noktaya ulaşamadık. Sonraki adımları düşünmeden önce bu codelab'i tamamlayın. Bu eğitimdeki taşıma işleminde şu birincil adımlar yer alır:
- Kurulum/Ön Çalışma
- Cloud NDB kitaplığı ekle
- Uygulama dosyalarını güncelle
3. Kurulum/Ön Çalışma
Eğiticinin ana bölümüne geçmeden önce projemizi yapılandıralı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 1 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 etkin olduğundan emin olun.
2. Temel örnek uygulamayı al
Ön koşullardan biri, çalışan bir Modül 1 ö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ı) veya atlamak isterseniz Modül 1 deposunu kopyalayın (bağlantıyı aşağıda bulabilirsiniz).
İster sizin ister bizimkininkini kullanın, Modül 1 kodunu BAŞLAyeceğiz. Bu Modül 2 codelab'i, her adımda size yol gösterir. Tamamlandığında, FINISH noktasındaki koda benzeyecektir (Python 2'den 3'e kadar olan isteğe bağlı "bonus" bağlantı noktası da dahil):
- START: 1. Modül kodu
- FINISH: Modül 2 Python 2 kodu (BONUS: Python 3 kodu)
- Deponun tamamı (ZIP dosyasını klonlamak veya indirmek için)
BAŞLANGIÇ Modülü 1 kod klasörünüz şu içeriğe sahip olmalıdır:
$ ls
README.md appengine_config.py requirements.txt
app.yaml main.py templates
Modül 1 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.
3. (Yeniden) Modül 1 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. Yapılandırma dosyalarını güncelleme (Cloud NDB kitaplığı ekleme)
Birçok orijinal App Engine yerleşik hizmeti, kendi ürünlerine de gelişti. Datastore da bunlardan biridir. Günümüzde App Engine dışı uygulamalar, Cloud Datastore'u kullanabiliyor. Google Cloud ekibi, uzun süredir ndb
kullanıcıları için Cloud Datastore ile iletişim kurmak amacıyla Cloud NDB istemci kitaplığını oluşturdu. Hem Python 2 hem de 3'te kullanılabilir.
Onay dosyalarını, App Engine ndb
öğesini Cloud NDB ile değiştirecek ve ardından uygulamamızı değiştirecek şekilde güncelleyelim.
1. requirements.txt
öğelerini güncelle
1. Modül'de uygulamamızın tek harici bağımlılığı Flask'tı. Şimdi Cloud NDB'yi ekleyeceğiz. 1. Modül'ün sonunda requirements.txt
dosyanız şu şekilde görünüyordu:
- ÖNCE:
Flask==1.1.2
ndb
App Engine'den başka bir sisteme geçiş yapmak için Cloud NDB kitaplığı (google-cloud-ndb
) gerekir. Bu nedenle paketi requirements.txt
hizmetine ekleyin.
- SONRASI:
Flask==1.1.2
google-cloud-ndb==1.7.1
Bu codelab'in yazıldığında önerilen en son sürüm 1.7.1'dir, ancak depodaki requirements.txt
sürümü daha yeni bir sürüme sahip 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.
lib
klasörünüz varsa ve yukarıda oluşturmadıysanız bu klasörü silin. Şimdi, güncellenen kitaplıkları pip install -t lib -r requirements.txt
komutuyla gerektiği şekilde pip
yerine pip2
kullanarak yeniden yükleyin.
2. app.yaml
öğelerini güncelle
google-cloud-ndb
gibi Google Cloud istemci kitaplıkları eklemek için birkaç gereksinim vardır. Bu gereksinimlerin tümü "yerleşik" özelliklerinin eklenmesiyle sağlanır kitaplıklarını, Google sunucularında zaten mevcut olan üçüncü taraf paketlerinde bulunabilir. Bu adresleri requirements.txt
içinde listelemez veya pip install
ile kopyalamazsınız. Tek gereksinim:
app.yaml
içindeki yerleşik kitaplıkları belirtin- Kullanıcıları, çalışabilecekleri kopyalanmış üçüncü taraf kitaplıklarına yönlendirin (
lib
ürününde)
İşte Modül 1'deki BAŞLANGIÇ app.yaml
:
- ÖNCE:
runtime: python27
threadsafe: yes
api_version: 1
handlers:
- url: /.*
script: main.app
Şimdi, yeni libraries
bölümünde grpcio
ve setuptools
adlı üçüncü taraf paket çiftine referans vermek için şu satırları app.yaml
öğesine ekleyin:
libraries:
- name: grpcio
version: 1.0.0
- name: setuptools
version: 36.6.0
Bu yerleşik kitaplıkları neden kullanmalısınız? gRPC, google-cloud-ndb
dahil olmak üzere tüm Google Cloud istemci kitaplıkları tarafından kullanılan açık bir RPC çerçevesidir. grpcio
kitaplığı, Python gRPC bağdaştırıcısıdır ve bu nedenle gereklidir. setuptools
eklenmenin gerekçesi yakında görülecektir.
- SONRASI:
Yukarıdaki değişiklikleri yaptıktan sonra, güncellenmiş app.yaml
artık şu şekilde görünmelidir:
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
3. appengine_config.py
öğelerini güncelle
setuptools
kitaplığının bir parçası olan pkg_resources
aracı, yerleşik üçüncü taraf kitaplıkların gruplandırılmış kitaplıklara erişmesini sağlamak için kullanılır. appengine_config.py
uygulamasını, pkg_resources
paketiyle lib
hizmetindeki gruplandırılmış kitaplıklara yönlendirecek şekilde güncelleyin. Bu değişikliği yaptığınızda dosyanın tamamı aşağıdaki gibi görünmelidir:
import pkg_resources
from google.appengine.ext import vendor
# Set PATH to your libraries folder.
PATH = 'lib'
# Add libraries installed in the PATH folder.
vendor.add(PATH)
# Add libraries to pkg_resources working set to find the distribution.
pkg_resources.working_set.add_entry(PATH)
5. Uygulama dosyalarını güncelle
Yapılandırma dosyası resmi işlemleri sona erdiğinde, artık ndb
ürününden Cloud NDB'ye geçiş yapabilirsiniz. Taşıma işlemini tamamlamak için main.py
uygulamasında içe aktarılan kitaplıkları güncelleyin ve bağlam yönetimi kullanımını ekleyin.
1. İçe aktarılanlar
main.py
uygulamasında aşağıdaki içe aktarma değişimini yap:
- ÖNCESİ
from google.appengine.ext import ndb
- SONRASI:
from google.cloud import ndb
App Engine kitaplığından Google Cloud kitaplığına geçiş, bazen bu örnek kadar incelikli olabilir. Tam Google Cloud ürünleri haline gelen yerleşik hizmetlerde özellikleri google.appengine
yerine google.cloud
ürününden içe aktaracaksınız.
2. Datastore erişimi
Cloud NDB kitaplığını kullanabilmeniz için uygulamanızın Python içerik yöneticileri kullanması gerekir. Amaçları “kapı durumunu” kaynakların kullanılabilmesi için öncelikle edinilmesi gerekir. Bağlam yöneticileri, Kaynak Atama: Başlatma (veya RAII) olarak bilinen bilgisayar bilimleri kontrol tekniğine dayanır. Bağlam yöneticileri, Python dosyaları (erişebilmeleri için açılmaları gerekir) ve eşzamanlılık, "spin Locks" ile kullanılır "kritik bölümdeki" koddan önce edinilmelidir yürütülebilir.
Benzer şekilde, Cloud NDB herhangi bir Datastore komutu yürütülmeden önce Datastore ile iletişim kurmak için istemcinin bağlamını edinmenizi gerektirir. Öncelikle, main.py
Flask başlatma işleminden hemen sonra ds_client = ndb.Client()
ekleyerek bir istemci (ndb.Client()
) oluşturun:
app = Flask(__name__)
ds_client = ndb.Client()
Pythonwith
komutu yalnızca bir nesnenin bağlamını almak için kullanılır. Datastore'a erişimi olan kod bloklarını with
ifadeleriyle sarmalayın.
Aşağıda, Datastore'a yeni bir Varlık yazma ve en son eklenen Varlıkları görüntüleme için okuma yapma ile ilgili Modül 1'deki işlevlerin aynısı verilmiştir:
- ÖNCE:
Bağlam yönetimi içermeyen orijinal kod şöyledir:
def store_visit(remote_addr, user_agent):
'create new Visit entity in Datastore'
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
def fetch_visits(limit):
'get most recent visits'
return (v.to_dict() for v in Visit.query().order(
-Visit.timestamp).fetch(limit))
- SONRASI:
Şimdi with ds_client.context():
öğesini ekleyin ve Datastore erişim kodunuzu with
bloğuna taşıyın:
def store_visit(remote_addr, user_agent):
'create new Visit entity in Datastore'
with ds_client.context():
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
def fetch_visits(limit):
'get most recent visits'
with ds_client.context():
return (v.to_dict() for v in Visit.query().order(
-Visit.timestamp).fetch(limit))
Burada ndb
(veya Cloud NDB) kodu olmadığından, ana sürücü uygulaması Modül 1'deki uygulamayla aynı kalır:
@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)
En iyi uygulamalardan biri, uygulama kodu ile veri erişimi arasında net bir ayrım sağlamaktır. Böylece, temel veri depolama mekanizması bu taşımada yaptığımız gibi değiştirildiğinde ana uygulama kodunuz değişmez.
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 2 deposundaki kodla 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:
2. Modül codelab'ini tamamladığınız için tebrik ederiz. Datastore'un kullandığı bu seride kesinlikle önerilen son taşıma işlemleri olduğu için bitiş çizgisini geçtiniz.
İ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
Bu noktada, bir sonraki hamleniz konusunda esneklik vardır. Aşağıdaki seçeneklerden birini belirleyin:
- Modül 2 Bonusu: Python 3 ve yeni nesil App Engine çalışma zamanına bağlantı oluşturmayı keşfetmek için bu eğiticinin bonus bölümüne geçin.
- 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ız gerekmez. - Uygulamanızı Python 3'e taşımış olmanız gerekir
- 3. Modül:
- Cloud NDB'den Cloud Datastore'a Datastore erişimini modernleştirme
- Bu, Python 3 App Engine uygulamaları ve App Engine dışı uygulamalar için kullanılan kitaplıktır
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 de üçüncü taraf paketlere erişimin kolaylaştırılmasıdır. app.yaml
ürününde yerleşik paketleri belirtmeye gerek yoktur veya yerleşik olmayan kitaplıkları kopyalama ya da yükleme zorunluluğu yoktur; requirements.txt
içinde listelenmeleri için dolaylı olarak yüklenirler.
Örneğimiz çok temel ve Cloud NDB Python 2-3 uyumlu olduğundan hiçbir uygulama kodunun açıkça 3.x'e taşınması gerekmez; Uygulama, değiştirilmeden 2.x ve 3.x sürümlerinde çalışır. Dolayısıyla, bu durumda yalnızca gerekli değişiklikler yapılandırmada olacaktır:
app.yaml
yönergesini, Python 3'e referans verecek ve üçüncü taraf kitaplıklarını kaldıracak şekilde basitleştirin.- Artık gerekli olmadığı için
appengine_config.py
velib
klasörünü silin.
main.py
dosyaları gibi requirements.txt
ve templates/index.html
dosyalarında da değişiklik olmaz.
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. 2. 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 bilgi için dokümanların sayfasını ziyaret edin.
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, app.yaml
aşağıdaki gibi görünen bir entrypoint
yönergesiyle belirtilebilir:
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 bilgi için dokümanlar sayfasını inceleyin. Daha fazla örnek ve en iyi uygulama için App Engine Standart başlangıç belgelerine ve App Engine Esnek başlangıç belgelerine 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 2 ö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.
2. 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 (önceki) Özet/Temizlik sayfasını 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 1 (START) ve Modül 2 (FINISH) için depo klasörlerinin bağlantılarını aşağıdaki tabloda bulabilirsiniz. Bunlara tüm App Engine codelab taşıma işlemleri için depodan da erişilebilir. Bu depoyu klonlayabilir veya ZIP dosyası indirebilirsiniz.
Codelab | Python 2 | Python 3 |
(Yok) | ||
2. Modül |
App Engine kaynakları
Bu taşıma işlemiyle ilgili ek kaynaklar aşağıda verilmiştir:
- Python NDB referansları
- (ESKİ) Python 2.5 ve
webapp
sürümlerinden 2.7 vewebapp2
sürümlerine taşıma - Python 3 ve GAE yeni nesil çalışma zamanına geçiş
- Genel