1. Genel Bakış
Serverless Migration Station serisi codelab'ler (kendi hızınızda ilerleyebileceğiniz, uygulamalı eğitimler) ve ilgili videolar, Google Cloud sunucusuz geliştiricilerin öncelikle eski hizmetlerden uzaklaşarak bir veya daha fazla taşıma işlemi yapmalarına rehberlik ederek uygulamalarını modernleştirmelerine yardımcı olmayı amaçlar. Bu sayede uygulamalarınız daha taşınabilir hale gelir, daha fazla seçenek ve esneklik elde edersiniz. Böylece daha geniş bir Cloud ürün yelpazesiyle entegrasyon yapabilir, bu ürünlere erişebilir ve yeni dil sürümlerine daha kolay yükseltebilirsiniz. Başlangıçta öncelikle App Engine (standart ortam) geliştiricileri olmak üzere en eski Cloud kullanıcılarına odaklanılsa da bu seri, Cloud Functions ve Cloud Run gibi diğer sunucusuz platformları veya uygun olduğu durumlarda başka platformları da kapsayacak kadar geniştir.
Bu codelab'de, App Engine görev kuyruğu çekme görevlerini 1. Modül codelab'indeki örnek uygulamaya nasıl dahil edeceğiniz ve kullanacağınız açıklanmaktadır. Bu Modül 18 eğitiminde çekme görevlerinin kullanımını ekliyoruz. Ardından, Modül 19'da bu kullanımı Cloud Pub/Sub'a taşıyoruz. Push görevleri için Görev Sıraları'nı kullananlar bunun yerine Cloud Tasks'e geçiş yapacak ve 7-9. modüllere başvuracaktır.
Bu demoda aşağıdaki işlemleri yapmayı öğreneceksiniz:
- App Engine Görev Sırası API'sini/paketlenmiş hizmetini kullanma
- Temel bir Python 2 Flask App Engine NDB uygulamasına pull sırası kullanımı ekleme
İhtiyacınız olanlar
- Etkin bir GCP faturalandırma hesabına sahip bir Google Cloud Platform projesi
- Temel Python becerileri
- Yaygın Linux komutları hakkında çalışma bilgisi
- App Engine uygulamalarını geliştirme ve dağıtma hakkında temel bilgiler
- Çalışan bir 1. Modül App Engine uygulaması (codelab'ini tamamlayın [önerilir] veya uygulamayı depodan kopyalayın)
Anket
Bu eğitimi nasıl kullanacaksınız?
Python ile ilgili deneyiminizi nasıl değerlendirirsiniz?
Google Cloud hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?
2. Arka plan
App Engine Task Queue çekme görevlerinden geçiş yapmak için 1. Modül Codelab'i sonucunda ortaya çıkan mevcut Flask ve App Engine NDB uygulamasına kullanımını ekleyin. Örnek uygulama, son kullanıcının en son ziyaretlerini gösterir. Bu iyi bir yöntem olsa da en çok ziyaret eden kullanıcıları görmek için ziyaretçileri de takip etmek daha ilgi çekicidir.
Bu ziyaretçi sayıları için push görevleri kullanabilsek de sorumluluğu, ziyaretleri kaydetmek ve kullanıcılara anında yanıt vermekle görevli örnek uygulama ile normal istek-yanıt iş akışının dışında ziyaretçi sayılarını toplamakla görevli belirlenmiş bir "çalışan" arasında paylaştırmak istiyoruz.
Bu tasarımı uygulamak için ana uygulamaya çekme kuyruklarının kullanımını ekliyor ve çalışan işlevini destekliyoruz. Çalışan, ayrı bir işlem (ör. arka uç örneği veya her zaman açık olan bir sanal makinede çalışan kod), cron işi ya da curl veya wget kullanılarak yapılan temel bir komut satırı HTTP isteği olarak çalışabilir. Bu entegrasyondan sonra, uygulamayı bir sonraki (19. modül) codelab'de Cloud Pub/Sub'a taşıyabilirsiniz.
Bu eğitimde aşağıdaki adımlar yer almaktadır:
- Kurulum/Ön Hazırlık
- Yapılandırmayı güncelleyin
- Uygulama kodunu değiştirme
3. Kurulum/Ön Hazırlık
Bu bölümde aşağıdakilerin nasıl yapılacağı açıklanmaktadır:
- Cloud projenizi ayarlama
- Temel örnek uygulamayı edinme
- Temel uygulamayı (yeniden) dağıtma ve doğrulama
Bu adımlar, çalışan bir kodla başlamanızı sağlar.
1. Proje oluşturma
1. Modül'deki codelab'i tamamladıysanız aynı projeyi (ve kodu) yeniden kullanın. Alternatif olarak, yepyeni bir proje oluşturun veya mevcut başka bir projeyi yeniden kullanın. Projenin etkin bir faturalandırma hesabına ve etkin bir App Engine uygulamasına sahip olduğundan emin olun. Bu codelab'de birkaç kez kullanmanız gerekeceğinden proje kimliğinizi bulun ve PROJECT_ID değişkeniyle karşılaştığınızda proje kimliğinizi kullanın.
2. Temel örnek uygulamayı edinme
Bu codelab'in ön koşullarından biri, çalışan bir 1. Modül App Engine uygulamasının olmasıdır. 1. Modül codelab'ini tamamlayın (önerilir) veya 1. Modül uygulamasını depodan kopyalayın. Sizinkini veya bizimkini kullanıyor olmanız fark etmez. 1. Modül kodu, "BAŞLAYACAĞIMIZ" yerdir. Bu codelab, her adımda size yol gösterir ve 18. modülün "FINISH" adlı depo klasöründeki koda benzer bir kodla sonuçlanır.
- BAŞLANGIÇ: Module 1 folder (Python 2)
- TAMAMLA: 18. Modül klasörü (Python 2)
- Deponun tamamı (ZIP dosyasını klonlamak veya indirmek için)
1. Modül'de hangi uygulamayı kullanırsanız kullanın, klasör aşağıdaki çıkışa benzer görünmelidir. Klasörde lib klasörü de olabilir:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
3. Temel uygulamayı (yeniden) dağıtma
1. Modül uygulamasını dağıtmak için aşağıdaki adımları uygulayın:
- Varsa
libklasörünü silin veliböğesini yeniden doldurmak içinpip install -t lib -r requirements.txtkomutunu çalıştırın. Hem Python 2 hem de 3 yüklüyse bunun yerinepip2komutunu kullanmanız gerekebilir. gcloudkomut satırı aracını yüklediğinizden ve başlattığınızdan emin olun ve kullanımını inceleyin.- Verilen her
gcloudkomutundaPROJECT_IDdeğerini girmek istemiyorsanız Cloud projenizigcloud config set projectPROJECT_IDile ayarlayın. - Örnek uygulamayı
gcloud app deployile dağıtma - 1. Modül uygulamasının beklendiği gibi çalıştığını ve en son ziyaretleri gösterdiğini onaylayın (aşağıda gösterilmiştir).

4. Yapılandırmayı güncelleyin
Standart App Engine yapılandırma dosyalarında (app.yaml, requirements.txt, appengine_config.py) herhangi bir değişiklik yapılması gerekmez. Bunun yerine, aynı üst düzey dizine yerleştirerek aşağıdaki içeriklere sahip yeni bir yapılandırma dosyası (queue.yaml) ekleyin:
queue:
- name: pullq
mode: pull
queue.yaml dosyası, uygulamanız için mevcut olan tüm görev sıralarını (App Engine tarafından otomatik olarak oluşturulan default [push] sırası hariç) belirtir. Bu durumda yalnızca bir tane vardır: pullq adlı bir pull sırası. App Engine, mode yönergesinin pull olarak belirtilmesini gerektirir. Aksi takdirde, varsayılan olarak bir push sırası oluşturur. Çekme sıraları oluşturma hakkında daha fazla bilgiyi dokümanlarda bulabilirsiniz. Diğer seçenekler için queue.yaml referans sayfasına da bakın.
Bu dosyayı uygulamanızdan ayrı olarak dağıtın. gcloud app deploy kullanmaya devam edersiniz ancak komut satırında queue.yaml da sağlarsınız:
$ gcloud app deploy queue.yaml Configurations to update: descriptor: [/tmp/mod18-gaepull/queue.yaml] type: [task queues] target project: [my-project] WARNING: Caution: You are updating queue configuration. This will override any changes performed using 'gcloud tasks'. More details at https://cloud.google.com/tasks/docs/queue-yaml Do you want to continue (Y/n)? Updating config [queue]...⠹WARNING: We are using the App Engine app location (us-central1) as the default location. Please use the "--location" flag if you want to use a different location. Updating config [queue]...done. Task queues have been updated. Visit the Cloud Platform Console Task Queues page to view your queues and cron jobs. $
5. Uygulama kodunu değiştirme
Bu bölümde aşağıdaki dosyalarda yapılan güncellemeler yer almaktadır:
main.py: Pull sıralarının kullanımını ana uygulamaya ekleyin.templates/index.html— Web şablonunu yeni verileri gösterecek şekilde güncelleyin.
İçe aktarmalar ve sabitler
İlk adım, çekme sıralarını desteklemek için bir yeni içe aktarma ve birkaç sabit eklemektir:
- Görev sırası kitaplığının içe aktarma işlemini ekleyin:
google.appengine.api.taskqueue. - Çekme sıramızdan (
QUEUE) bir saat (HOUR) boyunca maksimum sayıda çekme görevinin (TASKS) kiralanmasını desteklemek için üç sabit değer ekleyin. - En son ziyaretlerin yanı sıra en iyi ziyaretçileri görüntülemek için bir sabit ekleyin (
LIMIT).
Aşağıda orijinal kod ve bu güncellemeler yapıldıktan sonraki görünümü yer almaktadır:
ÖNCESİ:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
SONRASI:
from flask import Flask, render_template, request
from google.appengine.api import taskqueue
from google.appengine.ext import ndb
HOUR = 3600
LIMIT = 10
TASKS = 1000
QNAME = 'pullq'
QUEUE = taskqueue.Queue(QNAME)
app = Flask(__name__)
Çekme görevi ekleme (görev için veri toplama ve çekme sırası içinde görev oluşturma)
Veri modeli Visit aynı kalır. fetch_visits() içinde gösterilecek ziyaretler için sorgulama da aynı şekilde devam eder. Kodun bu bölümünde yalnızca store_visit() kısmında değişiklik yapılması gerekir. Ziyareti kaydetmenin yanı sıra, çalışan ziyaretçi sayacını artırabilsin diye ziyaretçinin IP adresiyle birlikte pull sırasına bir görev ekleyin.
ÖNCESİ:
class Visit(ndb.Model):
'Visit entity registers visitor IP address & timestamp'
visitor = ndb.StringProperty()
timestamp = ndb.DateTimeProperty(auto_now_add=True)
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 Visit.query().order(-Visit.timestamp).fetch(limit)
SONRASI:
class Visit(ndb.Model):
'Visit entity registers visitor IP address & timestamp'
visitor = ndb.StringProperty()
timestamp = ndb.DateTimeProperty(auto_now_add=True)
def store_visit(remote_addr, user_agent):
'create new Visit in Datastore and queue request to bump visitor count'
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
QUEUE.add(taskqueue.Task(payload=remote_addr, method='PULL'))
def fetch_visits(limit):
'get most recent visits'
return Visit.query().order(-Visit.timestamp).fetch(limit)
Ziyaretçi izleme için veri modeli ve sorgu işlevi oluşturma
Ziyaretçileri izlemek için bir veri modeli VisitorCount ekleyin. Bu modelde, visitor için alanların yanı sıra ziyaret sayısını izlemek için bir tam sayı counter alanı olmalıdır. Ardından, en çok ziyaretçiden en az ziyaretçiye doğru sıralamayı sorgulamak ve döndürmek için fetch_counts() adlı yeni bir işlev (alternatif olarak Python classmethod olabilir) ekleyin. Sınıfı ve işlevi fetch_visits() gövdesinin hemen altına ekleyin:
class VisitorCount(ndb.Model):
visitor = ndb.StringProperty(repeated=False, required=True)
counter = ndb.IntegerProperty()
def fetch_counts(limit):
'get top visitors'
return VisitCount.query().order(-VisitCount.counter).fetch(limit)
Çalışan kodu ekleme
Ziyaretçileri /log üzerinden GET isteğiyle kaydetmek için yeni bir işlev log_visitors() ekleyin. En son ziyaretçi sayılarını izlemek için sözlük/karma kullanır ve bir saat boyunca mümkün olduğunca çok görev kiralar. Her görev için aynı ziyaretçinin tüm ziyaretlerini toplar. Uygulama, eldeki toplamlarla Datastore'da bulunan tüm ilgili VisitorCount öğelerini günceller veya gerekirse yenilerini oluşturur. Son adımda, kaç ziyaretçinin kaç işlenmiş görevden kayıt yaptırdığını gösteren düz metin bir mesaj döndürülür. Bu işlevi main.py alanına, fetch_counts() alanının hemen altına ekleyin:
@app.route('/log')
def log_visitors():
'worker processes recent visitor counts and updates them in Datastore'
# tally recent visitor counts from queue then delete those tasks
tallies = {}
tasks = QUEUE.lease_tasks(HOUR, TASKS)
for task in tasks:
visitor = task.payload
tallies[visitor] = tallies.get(visitor, 0) + 1
if tasks:
QUEUE.delete_tasks(tasks)
# increment those counts in Datastore and return
for visitor in tallies:
counter = VisitorCount.query(VisitorCount.visitor == visitor).get()
if not counter:
counter = VisitorCount(visitor=visitor, counter=0)
counter.put()
counter.counter += tallies[visitor]
counter.put()
return 'DONE (with %d task[s] logging %d visitor[s])\r\n' % (
len(tasks), len(tallies))
Ana işleyiciyi yeni görüntüleme verileriyle güncelleme
En çok ziyaretçiyi göstermek için ana işleyiciyi root(), fetch_counts()'yi çağıracak şekilde güncelleyin. Ayrıca şablon, en iyi ziyaretçilerin ve en son ziyaretlerin sayısını gösterecek şekilde güncellenecek. Ziyaretçi sayılarını, fetch_visits() numarasına yapılan aramadan elde edilen en son ziyaretlerle birlikte paketleyin ve web şablonuna aktarmak için tek bir context'ye bırakın. Aşağıda, bu değişiklik yapılmadan önceki ve sonraki kod verilmiştir:
ÖNCESİ:
@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)
SONRASI:
@app.route('/')
def root():
'main application (GET) handler'
store_visit(request.remote_addr, request.user_agent)
context = {
'limit': LIMIT,
'visits': fetch_visits(LIMIT),
'counts': fetch_counts(LIMIT),
}
return render_template('index.html', **context)
main.py için gerekli olan tüm değişiklikler bunlardır. main.py'da yaptığınız değişiklikler hakkında genel bir fikir edinmeniz için bu güncellemelerin resimli bir gösterimini aşağıda bulabilirsiniz:

Web şablonunu yeni görüntüleme verileriyle güncelleme
Web şablonu templates/index.html, en son ziyaretçilerin normal yüküne ek olarak en çok ziyaretçiyi göstermek için güncellenmelidir. En iyi ziyaretçileri ve sayılarını sayfanın üst kısmındaki bir tabloya yerleştirin ve en son ziyaretleri eskisi gibi işlemeye devam edin. Diğer tek değişiklik, sayıyı sabit kodlamak yerine limit değişkeni aracılığıyla gösterilen sayıyı belirtmektir. Web şablonunuzda yapmanız gereken güncellemeler:
ÖNCESİ:
<!doctype html>
<html>
<head>
<title>VisitMe Example</title>
<body>
<h1>VisitMe example</h1>
<h3>Last 10 visits</h3>
<ul>
{% for visit in visits %}
<li>{{ visit.timestamp.ctime() }} from {{ visit.visitor }}</li>
{% endfor %}
</ul>
SONRASI:
<!doctype html>
<html>
<head>
<title>VisitMe Example</title>
<body>
<h1>VisitMe example</h1>
<h3>Top {{ limit }} visitors</h3>
<table border=1 cellspacing=0 cellpadding=2>
<tr><th>Visitor</th><th>Visits</th></tr>
{% for count in counts %}
<tr><td>{{ count.visitor|e }}</td><td align="center">{{ count.counter }}</td></tr>
{% endfor %}
</table>
<h3>Last {{ limit }} visits</h3>
<ul>
{% for visit in visits %}
<li>{{ visit.timestamp.ctime() }} from {{ visit.visitor }}</li>
{% endfor %}
</ul>
Bu işlemle, 1. Modül örnek uygulamasına App Engine Task Queue çekme görevlerinin kullanımını eklemek için gerekli değişiklikler tamamlanmış olur. Dizininiz artık 18. Modül örnek uygulamasını temsil ediyor ve şu dosyaları içermelidir:
$ ls README.md appengine_config.py queue.yaml templates app.yaml main.py requirements.txt
6. Özet/Temizleme
Bu bölümde, uygulamayı dağıtarak, amaçlandığı gibi çalıştığını ve yansıtılan tüm çıktılarda çalıştığını doğrulayarak bu codelab'i tamamlıyoruz. Ziyaretçi sayılarını işlemek için çalışanı ayrı olarak çalıştırın. Uygulama doğrulandıktan sonra temizleme adımlarını uygulayın ve sonraki adımları göz önünde bulundurun.
Uygulamayı dağıtma ve doğrulama
Bu codelab'in üst kısmında gcloud app deploy queue.yaml ile yaptığımız gibi çekme sıranızı daha önce ayarladığınızdan emin olun. Bu işlem tamamlandıysa ve örnek uygulamanız kullanıma hazırsa uygulamanızı gcloud app deploy ile dağıtın. Çıkış, artık en üstte "en çok ziyaret edenler" tablosu içermesi dışında 1. Modül uygulamasının çıkışıyla aynı olmalıdır:

Güncellenen web ön ucu, en çok ziyaret eden kullanıcıları ve en son ziyaretleri gösterse de ziyaretçi sayılarının bu ziyareti içermediğini unutmayın. Uygulama, çekme sırasına bu ziyaretçinin sayısını artıran yeni bir görev bırakırken önceki ziyaretçi sayılarını gösterir. Bu görev, işlenmeyi beklemektedir.
/log yöntemini çeşitli şekillerde çağırarak görevi yürütebilirsiniz:
- App Engine arka uç hizmeti
- A
cronişi - Web tarayıcısı
- Bir komut satırı HTTP isteği (
curl,wgetvb.)
Örneğin, /log adresine bir GET isteği göndermek için curl kullanıyorsanız ve PROJECT_ID değerini sağladıysanız çıkışınız şu şekilde görünür:
$ curl https://PROJECT_ID.appspot.com/log DONE (with 1 task[s] logging 1 visitor[s])
Güncellenen sayı, bir sonraki web sitesi ziyaretinde gösterilir. İşte bu kadar.
Örnek uygulamaya App Engine Görev Sırası pull sırası hizmetinin kullanımını başarıyla eklemeyle ilgili bu codelab'i tamamladığınız için tebrik ederiz. Artık 19. modülde Cloud Pub/Sub, Cloud NDB ve Python 3'e taşınmaya hazırdır.
Temizleme
Genel
Şimdilik işiniz bittiyse faturalandırmayı önlemek için App Engine uygulamanızı devre dışı bırakmanızı öneririz. Ancak biraz daha test veya deneme yapmak isterseniz App Engine platformunda ücretsiz kota bulunur. Bu nedenle, kullanım katmanını aşmadığınız sürece sizden ücret alınmaz. Bu, işlem için geçerlidir ancak ilgili App Engine hizmetleri için de ücret alınabilir. Daha fazla bilgi için fiyatlandırma sayfasını inceleyin. Bu taşıma işlemine başka Cloud hizmetleri de dahilse bunlar ayrı olarak faturalandırılır. Her iki durumda da varsa aşağıdaki "Bu codelab'e özel" bölümüne bakın.
Tam açıklama yapmak gerekirse App Engine gibi bir Google Cloud sunucusuz bilgi işlem platformuna dağıtım yapıldığında küçük derleme ve depolama maliyetleri oluşur. Cloud Build ve Cloud Storage'ın kendi ücretsiz kotaları vardır. Bu görüntünün depolanması, kotanın bir kısmını kullanır. Ancak, böyle bir ücretsiz katmanın olmadığı bir bölgede yaşıyor olabilirsiniz. Bu nedenle, olası maliyetleri en aza indirmek için depolama alanı kullanımınıza dikkat edin. İncelemeniz gereken belirli Cloud Storage "klasörleri" şunlardır:
console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/imagesconsole.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com- Yukarıdaki depolama bağlantıları,
PROJECT_IDve *LOC*ınıza bağlıdır. Örneğin, uygulamanız ABD'de barındırılıyorsa "us" olur.
Öte yandan, bu uygulamaya veya ilgili diğer taşıma codelab'lerine devam etmeyecekseniz ve her şeyi tamamen silmek istiyorsanız projenizi kapatın.
Bu codelab'e özel
Aşağıda listelenen hizmetler bu codelab'e özeldir. Daha fazla bilgi için her ürünün belgelerine bakın:
- App Engine Görev Kuyruğu hizmeti, Görev Kuyruğu gibi eski paketlenmiş hizmetlerin fiyatlandırma sayfasında belirtildiği gibi ek faturalandırmaya tabi değildir.
- App Engine Datastore hizmeti, ücretsiz katmanı da olan Cloud Datastore (Datastore modunda Cloud Firestore) tarafından sağlanır. Daha fazla bilgi için fiyatlandırma sayfasına bakın.
Sonraki adımlar
Bu "taşıma" işleminde, ziyaretçileri izleme desteği ekleyerek 1. Modül örnek uygulamasına Task Queue push sırası kullanımını eklediniz ve böylece 18. Modül örnek uygulamasını uyguladınız. Bir sonraki taşıma işleminde App Engine çekme görevlerini Cloud Pub/Sub'a yükselteceksiniz. 2021'in sonlarından itibaren, Python 3'e yükseltme yaparken kullanıcıların Cloud Pub/Sub'a geçmesi gerekmemektedir. Bu konu hakkında daha fazla bilgiyi sonraki bölümde bulabilirsiniz.
Cloud Pub/Sub'a geçiş için 19. modülün codelab'ine bakın. Bunların dışında Cloud Datastore, Cloud Memorystore, Cloud Storage veya Cloud Tasks (push kuyrukları) gibi ek geçişler de göz önünde bulundurulmalıdır. Cloud Run ve Cloud Functions'a ürünler arası geçişler de vardır. Tüm Serverless Migration Station içeriklerine (codelab'ler, videolar, kaynak kodu [varsa]) açık kaynak deposundan erişilebilir.
7. Python 3'e taşıma
2021 sonbaharında App Engine ekibi, paketlenmiş hizmetlerin çoğunun desteğini 2. nesil çalışma zamanlarına (1. nesil çalışma zamanına sahip) genişletti. Sonuç olarak, uygulamanızı Python 3'e taşırken App Engine Görev Sırası gibi paketlenmiş hizmetlerden Cloud Pub/Sub gibi bağımsız Cloud veya üçüncü taraf hizmetlerine taşımanız gerekmez. Başka bir deyişle, kodu paketlenmiş hizmetlere yeni nesil çalışma zamanlarından erişecek şekilde uyarladığınız sürece Python 3 App Engine uygulamalarında Görev Sırası'nı kullanmaya devam edebilirsiniz.
Paketlenmiş hizmet kullanımını Python 3'e taşıma hakkında daha fazla bilgiyi 17. modül codelab'inde ve ilgili videoda bulabilirsiniz. Bu konu 18. Modül'ün kapsamı dışında olsa da aşağıda, Python 3'e taşınan ve App Engine NDB'yi kullanmaya devam eden 1. Modül uygulamasının Python 3 sürümlerinin bağlantıları verilmiştir. (Bir süre sonra Modül 18 uygulamasının Python 3 sürümü de kullanıma sunulacaktır.)
8. Ek kaynaklar
Bu veya ilgili geçiş modülünü ve ilgili ürünleri daha ayrıntılı incelemek isteyen geliştiriciler için ek kaynaklar aşağıda listelenmiştir. Bu sayfada, içerikle ilgili geri bildirimde bulunabileceğiniz yerler, kod bağlantıları ve faydalı bulabileceğiniz çeşitli belgeler yer alır.
Codelab ile ilgili sorunlar/geri bildirimler
Bu codelab ile ilgili sorun bulursanız lütfen göndermeden önce sorununuzu arayın. Arama yapma ve yeni sorunlar oluşturma bağlantıları:
Taşıma kaynakları
1. Modül (BAŞLANGIÇ) ve 18. Modül (BİTİŞ) ile ilgili depo klasörlerinin bağlantılarını aşağıdaki tabloda bulabilirsiniz. Ayrıca, tüm App Engine codelab geçişlerinin bulunduğu depodan da erişilebilir. Depoyu klonlayın veya ZIP dosyası indirin.
Codelab | Python 2 | Python 3 |
kod (bu eğitimde yer almaz) | ||
18. Modül (bu codelab) | Yok |
Online referanslar
Bu eğitimle ilgili kaynakları aşağıda bulabilirsiniz:
App Engine görev sırası
- App Engine görev sırasına genel bakış
- App Engine görev sırası çekme sıralarına genel bakış
- App Engine görev sırası pull sırası tam örnek uygulaması
- Task Queue çekme sıraları oluşturma
- Google I/O 2011 pull sırası lansman videosu ( Votelator örnek uygulaması)
queue.yamlreferansqueue.yamlve Cloud Tasks karşılaştırması- Pull sıralarını Pub/Sub'a taşıma rehberi
- App Engine görev sırası çekme sıralarını Cloud Pub/Sub'a taşıma dokümanı örneği
App Engine platformu
App Engine belgeleri
Python 2 App Engine (standart ortam) çalışma zamanı
Python 3 App Engine (standart ortam) çalışma zamanı
Python 2 ve 3 App Engine (standart ortam) çalışma zamanları arasındaki farklar
Python 2'den 3'e App Engine (standart ortam) taşıma kılavuzu
App Engine fiyatlandırma ve kota bilgileri
İkinci nesil App Engine platformunun kullanıma sunulması (2018)
Eski çalışma zamanları için uzun süreli destek
Doküman taşıma örnekleri
Diğer Cloud bilgileri
- Google Cloud Platform'da Python
- Google Cloud Python istemci kitaplıkları
- Google Cloud "Her Zaman Ücretsiz" katmanı
- Google Cloud SDK (
gcloudkomut satırı aracı) - Tüm Google Cloud belgeleri
Videolar
- Sunucusuz Taşıma İstasyonu
- Sunucusuz Expeditions
- Google Cloud Tech kanalına abone olun.
- Google Developers'a abone olun.
Lisans
Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.