1. Genel Bakış
Sunucusuz Taşıma İstasyonu codelab'leri serisi (kendi kendine ilerleyen, uygulamalı eğiticiler) ve ilgili videolar, Google Cloud sunucusuz geliştiricilerinin uygulamalarını bir veya daha fazla taşıma işleminde yönlendirerek uygulamalarını modernleştirmelerine yardımcı olmayı amaçlar. Bu videolar genellikle eski hizmetlerden uzaklaştırılır. Bu sayede uygulamalarınızı daha taşınabilir hale getirir, daha fazla seçenek ve esneklik elde edebilir, daha geniş bir Cloud ürünü yelpazesiyle entegrasyon ve erişim elde edebilir, ayrıca yeni dil sürümlerine kolayca geçiş yapabilirsiniz. Başlangıçta özellikle App Engine (standart ortam) geliştiricileri olmak üzere ilk Cloud kullanıcılarına odaklanan bu seri, Cloud Functions ve Cloud Run gibi diğer sunucusuz platformları veya uygun olduğu durumlarda diğer sunucusuz platformları ya da diğer platformları kapsayacak kadar geniş kapsamlıdır.
Bu codelab'de, Modül 1 codelab'den örnek uygulamaya App Engine Görev Sırası pull görevlerini nasıl ekleyeceğinizi ve kullanacağınızı öğretebilirsiniz. Bu Modül 18 eğiticisinde pull görevlerinin kullanımını ekleyip daha sonra Modül 19'da bu kullanımı Cloud Pub/Sub'a taşıyacağız. Push görevleri için Görev Sıralarını kullananlar, bunun yerine Cloud Tasks'a geçiş yapacak ve bunun yerine Modül 7-9'a başvurmaları gerekir.
Demoda aşağıdaki işlemleri yapmayı öğreneceksiniz:
- App Engine Task Queue API'yi/paketlenmiş hizmeti kullanma
- Temel Python 2 Flask App Engine NDB uygulamasına pull sırası kullanımı ekleme
Gerekenler
- Etkin bir GCP faturalandırma hesabına 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ı (kod laboratuvarını tamamlayın [önerilir] veya depodan uygulamayı kopyalayın)
Anket
Bu eğiticiden nasıl yararlanacaksınız?
Python deneyiminizi nasıl değerlendirirsiniz?
Google Cloud hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?
2. Arka plan
App Engine Görev Sırası pull görevlerinden geçiş yapmak için bu görevlerin kullanımını Modül 1 codelab'den elde edilen mevcut Flask ve App Engine NDB uygulamasına ekleyin. Örnek uygulama, son kullanıcıya yapılan en son ziyaretleri gösterir. Bu normaldir, ancak en çok kimlerin ziyaret ettiğini görmek için ziyaretçileri izlemek de daha da ilginçtir.
Bu ziyaretçi sayıları için push görevleri kullanabiliriz, ancak sorumluluğu ziyaretleri kaydetmek ve kullanıcılara hemen yanıt vermek olan örnek uygulama ile tanımlanmış bir "çalışan" arasında bölüştürmek istiyoruz ziyaretçi sayılarını normal istek-yanıt iş akışının dışında toplamak olan kişiler.
Bu tasarımı uygulamak için çalışan işlevselliğini desteklemenin yanı sıra ana uygulamaya pull sıraları kullanımını da ekliyoruz. Çalışan, curl
veya wget
kullanan ayrı bir işlem (ör. arka uç örneği veya her zaman açık bir sanal makinede çalışan kod), cron işi ya da temel bir komut satırı HTTP isteği olarak çalışabilir. Bu entegrasyondan sonra uygulamayı bir sonraki (Modül 19) codelab'de Cloud Pub/Sub'a taşıyabilirsiniz.
Bu eğitim aşağıdaki adımları içerir:
- Kurulum/Ön Çalışma
- Yapılandırmayı güncelleyin
- Uygulama kodunu değiştir
3. Kurulum/Ön Çalışma
Bu bölümde aşağıdakilerin nasıl yapılacağı açıklanmaktadır:
- Cloud projenizi oluşturun
- Temel örnek uygulamayı al
- Temel uygulamayı (yeniden) dağıtma ve doğrulama
Bu adımlar, çalışan bir kodla başlamanızı sağlar.
1. Proje oluşturun
Modül 1 codelab'ini tamamladıysanız aynı projeyi (ve kodu) yeniden kullanın. Alternatif olarak, yeni bir proje oluşturabilir veya mevcut başka bir projeyi yeniden kullanabilirsiniz. Projenin etkin bir faturalandırma hesabı ve etkin bir App Engine uygulamasının bulunduğundan emin olun. Bu codelab'de birkaç kez girmeniz gerekeceğinden proje kimliğinizi bulun ve PROJECT_ID
değişkeniyle her karşılaştığınızda kullanın.
2. Temel örnek uygulamayı al
Bu codelab'in ön koşullarından biri, çalışan bir Modül 1 App Engine uygulamasına sahip olmaktır. Modül 1 codelab'i tamamlayın (önerilen) veya depodan Modül 1 uygulamasını kopyalayın. İster sizinkini ister bizimkiyi kullanın, Modül 1 kodunu "BAŞLAT" olalım. Bu codelab'de her adımda size yol gösterilir ve Modül 18 depo klasöründeki "FINISH" kod deposuna benzeyen bir kod gösterilir.
- BAŞLAT: Modül 1 klasörü (Python 2)
- SON: Modül 18 klasörü (Python 2)
- Deponun tamamı (ZIP dosyasını klonlamak veya indirmek için)
Hangi Modül 1 uygulamasını kullandığınıza bakılmaksızın klasör, aşağıdaki çıkıştaki gibi görünmelidir. Büyük olasılıkla bir lib
klasörü de vardır:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
3. Temel uygulamayı (yeniden) dağıtma
Modül 1 uygulamasını dağıtmak için aşağıdaki adımları uygulayın:
- Varsa
lib
klasörünü silin velib
öğesini yeniden doldurmak içinpip install -t lib -r requirements.txt
komutunu çalıştırın. Cihazınızda Python 2 ve 3 yüklüyse bunun yerinepip2
komutunu kullanmanız gerekebilir. gcloud
komut satırı aracını yüklediğinizden, başlattığınızdan ve kullanımını incelediğinizden emin olun.- Verilen her
gcloud
komutundaPROJECT_ID
girmek istemiyorsanız Cloud projenizigcloud config set project
PROJECT_ID
olarak ayarlayın. - Örnek uygulamayı
gcloud app deploy
ile dağıtın - Modül 1 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
) değişiklik yapılmasına gerek yoktur. Bunun yerine, aynı üst düzey dizine yerleştirerek, aşağıdaki içeriğe sahip yeni bir yapılandırma dosyası (queue.yaml
) ekleyin:
queue:
- name: pullq
mode: pull
queue.yaml
dosyası, uygulamanız için mevcut tüm görev sıralarını belirtir (App Engine tarafından otomatik olarak oluşturulan default
[push] sırası hariç). Bu durumda, yalnızca bir tane, pullq
adlı bir pull sırası vardır. App Engine, mode
yönergesinin pull
olarak belirtilmesini gerektirir. Aksi takdirde varsayılan olarak bir push sırası oluşturur. Belgelerde pull sıraları hakkında daha fazla bilgi edinin. Diğer seçenekler için queue.yaml
referans sayfasını da inceleyin.
Bu dosyayı uygulamanızdan ayrı olarak dağıtın. gcloud app deploy
kodunu kullanmaya devam edersiniz ancak komut satırında queue.yaml
özelliğini de 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ştir
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 ekleyintemplates/index.html
— yeni verileri görüntülemek için web şablonunu güncelleyin
İthalat ve sabit değerler
İlk adım, pull sıralarını desteklemek için yeni bir içe aktarma ve birkaç sabit değer eklemektir.
- Görev Sırası kitaplığının (
google.appengine.api.taskqueue
) içe aktarılmasını ekleyin. - Bir saatlik (
HOUR
) maksimum pull görevi sayısını (TASKS
) pull sıramızdan (QUEUE
) kiralamayı desteklemek için üç sabit değer ekleyin. - En son ziyaretçileri ve en çok ziyaret edilen ziyaretçileri görüntülemek için bir sabit değer ekleyin (
LIMIT
).
Orijinal kodu ve bu güncellemeleri yaptıktan sonra nasıl göründüğünü aşağıda bulabilirsiniz:
ÖNCE:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
SONRA:
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__)
pull görevi ekleme (görev için veri toplama ve pull sırasında görev oluşturma)
Visit
veri modeli, fetch_visits()
içinde görüntülenecek ziyaretlerle ilgili sorgulamada olduğu gibi aynı kalır. Kodun bu bölümünde yapılması gereken tek değişiklik store_visit()
üzerindedir. Ziyareti kaydetmeye ek olarak, çalışanın ziyaretçi sayacını artırabilmesi için ziyaretçinin IP adresini içeren pull sırasına bir görev ekleyin.
ÖNCE:
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)
SONRA:
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 VisitorCount
veri modeli ekleyin, visitor
için alanların yanı sıra ziyaret sayısını izlemek için bir tam sayı counter
içermelidir. Ardından, en iyi ziyaretçileri en azdan en az düzende sorgulamak ve döndürmek için fetch_counts()
adlı yeni bir işlev ekleyin (alternatif olarak bir Python classmethod
olabilir). 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 ekle
/log
alanına yapılan bir GET isteği aracılığıyla ziyaretçileri günlüğe kaydetmek için yeni bir log_visitors()
işlevi ekleyin. En son ziyaretçi sayısını izlemek için bir sözlük/karma oluşturarak mümkün olduğunca fazla görevi bir saat boyunca kiralar. Her görev için, aynı ziyaretçinin tüm ziyaretleri sayılır. Hesaplamalar hazır olduğunda uygulama, halihazırda Datastore'da bulunan ilgili tüm VisitorCount
varlıklarını günceller veya gerekirse yenilerini oluşturur. Son adım, işlenen görev sayısından kaç ziyaretçinin kaydedildiğini gösteren düz bir kısa mesaj döndürür. Bu işlevi fetch_counts()
altındaki main.py
bölümüne 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 ekran verileriyle güncelle
En iyi ziyaretçileri görüntülemek için root()
ana işleyicisini fetch_counts()
yöntemini çağıracak şekilde güncelleyin. Ayrıca şablon, en çok ziyaret edilen ziyaretçilerin ve en son ziyaretlerin sayısını gösterecek şekilde güncellenecektir. Ziyaretçinin sayısını, fetch_visits()
çağrısından gelen en son ziyaretlerle birlikte paketleyin ve web şablonuna aktarmak için bunu tek bir context
öğesine bırakın. Bu değişiklik yapılmadan önceki ve yapıldıktan sonraki kodu aşağıda bulabilirsiniz:
ÖNCE:
@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)
SONRA:
@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
ile ilgili yapılması gereken tüm değişiklikler bunlardır. main.py
ürününde yaptığınız değişiklikler hakkında size genel bir fikir vermek amacıyla açıklama amaçlı olarak bu güncellemelerin resimli temsilini aşağıda bulabilirsiniz:
Web şablonunu yeni görüntülü reklam verileriyle güncelle
templates/index.html
web şablonunda, en yeni ziyaretçilerin normal yüküne ek olarak en çok ziyaret edilen ziyaretçileri görüntülemek için güncelleme gerekiyor. En çok ziyaret edilen ziyaretçileri ve sayılarını sayfanın üst kısmındaki bir tabloya bırakın ve en son ziyaretleri önceki gibi oluşturmaya devam edin. Diğer tek değişiklik, sayının koda gömülmesi yerine limit
değişkeni aracılığıyla gösterilen sayıyı belirtmektir. Web şablonunuzda yapmanız gereken güncellemeler şunlardır:
ÖNCE:
<!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>
SONRA:
<!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 sayede, App Engine Görev Sırası pull görevlerinin kullanımını Modül 1 örnek uygulamasına ekleyerek gerekli değişiklikler tamamlanmıştır. Dizininiz artık Modül 18 örnek uygulamasını temsil etmektedir ve şu dosyaları içermelidir:
$ ls README.md appengine_config.py queue.yaml templates app.yaml main.py requirements.txt
6. Özet/Temizlik
Bu bölümde, uygulamayı dağıtıp amaçlandığı şekilde ve yansıtılan herhangi bir çıkışta çalıştığını doğrulayarak bu codelab'i özetledik. Ziyaretçi sayılarını işlemek için çalışanı ayrı ayrı çalıştırın. Uygulama doğrulamasından sonra temizlik adımlarını uygulayın ve sonraki adımları değerlendirin.
Uygulamayı dağıtma ve doğrulama
gcloud app deploy queue.yaml
ile bu codelab'in üst kısımlarında yaptığımız gibi, pull sıranızı önceden oluşturduğunuzdan 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ış, Modül 1 uygulamasıyla aynı olmalıdır. Tek fark, uygulamada "en çok ziyaretçi" içermesidir. üst tablosunda yer alır:
Güncellenen web ön ucu en iyi ziyaretçileri ve en son ziyaretleri gösterirken, ziyaretçi sayılarının bu ziyareti içermediğini fark edin. Uygulama, işlenmeyi bekleyen bir görev olan pull sırasında bu ziyaretçinin sayısını artıran yeni bir görev atlarken önceki ziyaretçi sayılarını gösterir.
/log
numaralı telefonu arayarak görevi çeşitli şekillerde yürütebilirsiniz:
- App Engine arka uç hizmeti
cron
işi- Web tarayıcısı
- Komut satırı HTTP isteği (
curl
,wget
vb.)
Örneğin, /log
hizmetine GET isteği göndermek için curl
kullanıyorsanız PROJECT_ID
sağladığınızda çı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 yansıtılır. İşte bu kadar.
App Engine Görev Sırası pull sırası hizmetinin kullanımını örnek uygulamaya başarıyla ekleyerek bu codelab'i tamamladığınız için tebrik ederiz. Artık Modül 19'da Cloud Pub/Sub, Cloud NDB ve Python 3'e geçiş yapabilirsiniz.
Temizleme
Genel
Şimdilik işiniz bittiyse faturalandırılma olmaması için App Engine uygulamanızı devre dışı bırakmanızı öneririz. Bununla birlikte, daha fazla test veya deneme yapmak isterseniz App Engine platformunun ücretsiz bir kotası vardır ve bu kullanım katmanını aşmadığınız sürece sizden ücret alınmaz. Burası işlem içindir, ancak ilgili App Engine hizmetleri için de ücret alınabilir. Daha fazla bilgi için fiyatlandırma sayfasına göz atın. Bu taşıma işlemi başka Cloud hizmetlerini içeriyorsa bunlar ayrı olarak faturalandırılır. Her iki durumda da (geçerliyse) "Bu codelab'e özel" bölümünü inceleyin bölümüne bakın.
Ayrıntılı açıklama için, App Engine gibi Google Cloud sunucusuz bilgi işlem platformuna dağıtım yapmak küçük derleme ve depolama maliyetleri gerektirir. Cloud Build'in ve Cloud Storage'ın kendi ücretsiz kotası vardır. Söz konusu resmin depolanması bu kotanın bir kısmını kullanır. Ancak, bu kadar ücretsiz katmanın olmadığı bir bölgede yaşıyor olabilirsiniz. Bu nedenle, olası maliyetleri en aza indirmek için depolama alanı kullanımınız konusunda dikkatli olun. Belirli Cloud Storage "klasörleri" şunları incelemeniz gerekir:
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
- Yukarıdaki depolama alanı bağlantıları
PROJECT_ID
ve *LOC
*ifadenize bağlıdır (örneğin, "us
") Uygulamanız ABD'de barındırılıyorsa.
Öte yandan, bu uygulamayı veya diğer ilgili taşıma codelab'lerini kullanmayacak 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 Sırası hizmeti için, Görev Sırası gibi eski paketlenmiş hizmetlerin fiyatlandırma sayfası uyarınca ek faturalandırma yapılmaz.
- App Engine Datastore hizmeti, aynı zamanda ücretsiz bir katmana sahip olan Cloud Datastore (Data Store modunda Cloud Firestore) tarafından sağlanır; Daha fazla bilgi için fiyatlandırma sayfasını inceleyin.
Sonraki adımlar
Bu "taşıma" işleminde, Ziyaretçi takibi için destek ekleyip Modül 18 örnek uygulamasını uygulayarak Modül 1 örnek uygulamasına Görev Sırası aktarma sırası kullanımını eklediniz. Bir sonraki taşıma işleminde App Engine pull görevlerini Cloud Pub/Sub'a yükselteceksiniz. 2021'in sonlarından itibaren, Python 3'e geçiş yapan kullanıcıların Cloud Pub/Sub'a geçiş yapması gerekmemektedir. Bu konuyla ilgili daha fazla bilgiyi bir sonraki bölümde bulabilirsiniz.
Cloud Pub/Sub'a geçiş yapmak için Modül 19 codelab'e bakın. Bunun dışında, Cloud Datastore, Cloud Memorystore, Cloud Storage veya Cloud Tasks (push sıraları) gibi ek taşıma işlemleri gerçekleştirilebilir. Ayrıca Cloud Run ve Cloud Functions'a ürünler arası taşıma işlemleri de yapılabilir. Tüm Sunucusuz Taşıma İstasyonu içeriklerine (codelab'ler, videolar, kaynak kodu [kullanılabilir olduğunda]) açık kaynak deposundan erişebilirsiniz.
7. Python 3'e taşıma
2021'in sonbaharında App Engine ekibi paket haline getirilmiş çoğu hizmetin desteğini genişletti. Bu destek, 1. nesil çalışma zamanına sahip 2. nesil çalışma zamanlarına kadar genişletildi. Sonuç olarak, uygulamanızı Python 3'e taşırken artık App Engine Görev Sırası gibi paket halinde sunulan hizmetlerden bağımsız Cloud'a veya Cloud Pub/Sub gibi üçüncü taraf hizmetlerine geçiş yapmanız gerekmiyor. Başka bir deyişle, yeni nesil çalışma zamanlarından paket hâlinde sunulan hizmetlere erişmek için kodu geri yüklediğiniz sürece Görev Sırası'nı Python 3 App Engine uygulamalarında kullanmaya devam edebilirsiniz.
Modül 17 codelab'de ve ilgili videoda, paketlenmiş hizmet kullanımının Python 3'e nasıl taşınacağı hakkında daha fazla bilgi edinebilirsiniz. Bu konu Modül 18'in kapsamı dışında olsa da, Python 3'e taşınan ve hâlâ App Engine NDB kullanan Modül 1 uygulamasının Python 3 sürümlerini aşağıda bulabilirsiniz. (Bir süre sonra Modül 18 uygulamasının Python 3 sürümü de kullanıma sunulacaktır.)
8. Ek kaynaklar
Aşağıda, geliştiricilerin bu veya ilgili Taşıma Modülü'nü ve ilgili ürünleri daha ayrıntılı bir şekilde inceleyen ek kaynaklar verilmiştir. Bu bölümde, söz konusu içerikle ilgili geri bildirimde bulunabileceğiniz yerler, kod bağlantıları ve yararlı bulabileceğiniz çeşitli belgeler yer alır.
Codelab sorunları/geri bildirimi
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 18 (FINISH) için depo klasörlerinin bağlantılarını aşağıdaki tabloda bulabilirsiniz. Bu dosyalara tüm App Engine codelab taşıma işlemleri için depodan da erişilebilir. klonlayın veya bir ZIP dosyası indirin.
Codelab | Python 2 | Python 3 |
kod (bu eğiticide ele alınmamıştır) | ||
Modül 18 (bu codelab) | Yok |
Online referanslar
Aşağıda bu eğitimle alakalı kaynaklar verilmiştir:
App Engine Görev Sırası
- App Engine Görev Sırası'na genel bakış
- App Engine Görev Sırası pull sıralarına genel bakış
- App Engine Görev Sırası pull sırası tam örnek uygulama
- Görev Sırası pull sıraları oluşturma
- Google I/O 2011 pull sırası lansman videosu ( Sanatçı örnek uygulaması)
queue.yaml
referansıqueue.yaml
ile Cloud Tasks karşılaştırması- Sıraları Pub/Sub taşıma rehberine çekme
- App Engine Görev Sırası pull sıralarını Cloud Pub/Sub belge örneğine çekme
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 ile Python 2 arasındaki farklar 3 App Engine (standart ortam) çalışma zamanı
Python 2'den 3'e App Engine (standart ortam) taşıma kılavuzu
App Engine fiyatlandırması ve kota bilgileri
İkinci nesil App Engine platformunun kullanıma sunulması (2018)
Eski çalışma zamanları için uzun süreli destek
Belge taşıma örnekleri
Diğer Cloud bilgileri
- Google Cloud Platform'da Python
- Google Cloud Python istemci kitaplıkları
- Google Cloud "Daima Ücretsiz" katman
- Google Cloud SDK'sı (
gcloud
komut satırı aracı) - Tüm Google Cloud belgeleri
Videolar
- Sunucusuz Taşıma İstasyonu
- Sunucusuz Keşif Seferleri
- Google Cloud Teknolojisi'ne 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.