1. Übersicht
Die Codelabs-Reihe zur Serverless Migration Station (zum Selbststudium, praxisorientierte Anleitungen) und ähnliche Videos sollen Entwickler von Google Cloud Serverless bei der Modernisierung ihrer Anwendungen unterstützen, indem sie eine oder mehrere Migrationen durchgehen, in erster Linie von Legacy-Diensten. Dadurch werden Ihre Anwendungen portabler und bieten mehr Optionen und Flexibilität, sodass Sie eine breitere Palette von Cloud-Produkten einbinden und darauf zugreifen sowie einfacher auf neuere Sprachversionen upgraden können. Der Schwerpunkt dieser Reihe liegt anfangs auf die ersten Cloud-Nutzer, in erster Linie auf Entwicklern von App Engine (Standardumgebung). Sie ist aber umfassend genug, um auch andere serverlose Plattformen wie Cloud Functions und Cloud Run oder gegebenenfalls andere Plattformen einzubeziehen.
In diesem Codelab erfahren Sie, wie Sie Pull-Aufgaben der App Engine-Aufgabenwarteschlange in die Beispiel-App aus dem Codelab für Modul 1 einbinden und verwenden. Wir fügen die Verwendung von Pull-Aufgaben in Modul 18 hinzu und migrieren diese Nutzung dann zu Cloud Pub/Sub, bevor wir in Modul 19 weitermachen. Diejenigen, die Aufgabenwarteschlangen für Push-Aufgaben verwenden, migrieren stattdessen zu Cloud Tasks und sollten sich stattdessen auf die Module 7 bis 9 beziehen.
Sie werden lernen,
- Verwenden Sie die App Engine Task Queue API bzw. den gebündelten Dienst.
- Einfache App Engine NDB-Anwendung für Python 2 Flask: Pull-Warteschlangennutzung hinzufügen
Voraussetzungen
- Ein Google Cloud Platform-Projekt mit einem aktiven GCP-Rechnungskonto
- Grundlegende Python-Kenntnisse
- Erfahrung mit gängigen Linux-Befehlen
- Grundkenntnisse zum Entwickeln und Bereitstellen von App Engine-Anwendungen
- Eine funktionierende App Engine-Anwendung für Modul 1 (führen Sie ihr Codelab aus [empfohlen] oder kopieren Sie die Anwendung aus dem Repository)
Umfrage
Wie möchten Sie diese Anleitung nutzen?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrung mit Python bewerten?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrungen im Umgang mit Google Cloud-Diensten bewerten?
<ph type="x-smartling-placeholder">2. Hintergrund
Wenn Sie Pull-Aufgaben der App Engine-Aufgabenwarteschlange migrieren möchten, fügen Sie deren Nutzung der vorhandenen Flask- und App Engine NDB-Anwendung hinzu, die sich aus dem Codelab für Modul 1 ergibt. In der Beispiel-App werden dem Endnutzer die letzten Besuche angezeigt. Das ist kein Problem, aber es ist noch interessanter, auch die Besucher zu erfassen, um zu sehen, wer die meisten Besucher hat.
Auch wenn wir für diese Besucherzahlen Push-Aufgaben verwenden könnten, möchten wir die Zuständigkeit zwischen der Beispiel-App, deren Aufgabe es ist, Besuche zu registrieren und Nutzern sofort zu antworten, und einem designierten "Worker" aufteilen. dessen Aufgabe es ist, die Besucherzahlen außerhalb des normalen Anfrage-Antwort-Workflows zusammenzuzählen.
Zur Implementierung dieses Designs fügen wir der Hauptanwendung die Verwendung von Pull-Warteschlangen hinzu und unterstützen die Worker-Funktionalität. Der Worker kann als separater Prozess (z. B. als Back-End-Instanz oder als Code, der auf einer immer aktiven VM ausgeführt wird), als Cronjob oder als einfache Befehlszeilen-HTTP-Anfrage mit curl
oder wget
ausgeführt werden. Nach dieser Integration können Sie die Anwendung im nächsten Codelab (Modul 19) zu Cloud Pub/Sub migrieren.
Diese Anleitung umfasst die folgenden Schritte:
- Einrichtung/Vorarbeit
- Konfiguration aktualisieren
- Anwendungscode ändern
3. Einrichtung/Vorarbeit
In diesem Abschnitt wird Folgendes erläutert:
- Cloud-Projekt einrichten
- Baseline-Beispiel-App abrufen
- Referenz-App noch einmal bereitstellen und validieren
Mit diesen Schritten stellen Sie sicher, dass Sie mit funktionierendem Code beginnen.
1. Projekt einrichten
Wenn Sie das Codelab für Modul 1 abgeschlossen haben, verwenden Sie dasselbe Projekt (und Code) wieder. Alternativ können Sie ein neues Projekt erstellen oder ein anderes vorhandenes Projekt wiederverwenden. Achten Sie darauf, dass das Projekt ein aktives Rechnungskonto und eine aktivierte App Engine-Anwendung hat. Suchen Sie Ihre Projekt-ID, da Sie sie in diesem Codelab mehrmals benötigen werden. Verwenden Sie sie immer dann, wenn Sie die Variable PROJECT_ID
finden.
2. Baseline-Beispiel-App abrufen
Eine der Voraussetzungen für dieses Codelab ist eine funktionierende App Engine-App für Modul 1. Schließen Sie das Codelab für Modul 1 ab (empfohlen) oder kopieren Sie die App für Modul 1 aus dem Repository. Unabhängig davon, ob Sie Ihren oder unseren verwenden, starten wir im Code für Modul 1. Dieses Codelab führt Sie durch die einzelnen Schritte und endet mit Code, der dem im Repository-Ordner „FINISH“ des Moduls 18 enthaltenen Ordner ähnelt.
- START: Modul 1 Ordner (Python 2)
- FINISH: Modul 18 Ordner (Python 2)
- Gesamtes Repository (um die ZIP-Datei zu klonen oder herunterzuladen)
Unabhängig davon, welche Anwendung für Modul 1 Sie verwenden, sollte der Ordner wie die Ausgabe unten aussehen, möglicherweise auch mit einem lib
-Ordner:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
3. Referenz-App noch einmal bereitstellen
Führen Sie die folgenden Schritte aus, um die Anwendung Modul 1 bereitzustellen:
- Löschen Sie den Ordner
lib
, falls vorhanden, und führen Siepip install -t lib -r requirements.txt
aus, umlib
neu zu füllen. Wenn Sie Python 2 und 3 installiert haben, müssen Sie stattdessen möglicherweise den Befehlpip2
verwenden. - Prüfen Sie, ob Sie das
gcloud
-Befehlszeilentool installiert und initialisiert und seine Nutzung überprüft haben. - Legen Sie
gcloud config set project
PROJECT_ID
für Ihr Cloud-Projekt fest, wenn SiePROJECT_ID
nicht bei jedemgcloud
-Befehl eingeben möchten. - Beispielanwendung mit
gcloud app deploy
bereitstellen - Prüfen, ob die App für Modul 1 wie erwartet ausgeführt wird und die letzten Besuche anzeigt (siehe Abbildung unten)
4. Konfiguration aktualisieren
An den App Engine-Standardkonfigurationsdateien (app.yaml
, requirements.txt
, appengine_config.py
) sind keine Änderungen erforderlich. Fügen Sie stattdessen die neue Konfigurationsdatei queue.yaml
mit dem folgenden Inhalt hinzu und platzieren Sie sie im selben Verzeichnis auf oberster Ebene:
queue:
- name: pullq
mode: pull
Die Datei queue.yaml
gibt alle Aufgabenwarteschlangen an, die für Ihre Anwendung vorhanden sind. Eine Ausnahme bildet die default
-Warteschlange [push], die automatisch von App Engine erstellt wird. In diesem Fall gibt es nur eine, eine Pull-Warteschlange mit dem Namen pullq
. App Engine erfordert, dass die Anweisung mode
als pull
angegeben wird. Andernfalls wird standardmäßig eine Push-Warteschlange erstellt. Weitere Informationen zum Erstellen von Pull-Warteschlangen finden Sie in der Dokumentation. Weitere Optionen finden Sie auf der Referenzseite zu queue.yaml
.
Stellen Sie diese Datei getrennt von Ihrer Anwendung bereit. Sie verwenden weiterhin gcloud app deploy
, geben aber zusätzlich queue.yaml
in der Befehlszeile an:
$ 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. Anwendungscode ändern
In diesem Abschnitt werden die folgenden Dateien aktualisiert:
main.py
– der Hauptanwendung wird die Verwendung von Pull-Warteschlangen hinzugefügttemplates/index.html
– die Webvorlage wird aktualisiert, um die neuen Daten anzuzeigen
Importe und Konstanten
Der erste Schritt besteht darin, einen neuen Import und mehrere Konstanten hinzuzufügen, um Pull-Warteschlangen zu unterstützen:
- Fügen Sie einen Import der Aufgabenwarteschlangenbibliothek
google.appengine.api.taskqueue
hinzu. - Fügen Sie drei Konstanten hinzu, um das Leasing der maximalen Anzahl von Pull-Aufgaben (
TASKS
) für eine Stunde (HOUR
) aus unserer Pull-Warteschlange (QUEUE
) zu unterstützen. - Fügen Sie eine Konstante hinzu, um die jüngsten Besuche und die Top-Besucher (
LIMIT
) anzuzeigen.
Unten sehen Sie den ursprünglichen Code und wie er nach diesen Aktualisierungen aussieht:
VORHER:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
NACHHER:
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-Aufgabe hinzufügen (Daten für Aufgabe sammeln und Aufgabe in Pull-Warteschlange erstellen)
Das Datenmodell Visit
und die Abfragen von Besuchen, die in fetch_visits()
angezeigt werden, bleiben unverändert. Die einzige Änderung in diesem Teil des Codes ist in store_visit()
erforderlich. Zusätzlich zur Registrierung des Besuchs fügen Sie der Pull-Warteschlange eine Aufgabe mit der IP-Adresse des Besuchers hinzu, damit der Worker den Besucherzähler erhöhen kann.
VORHER:
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)
NACHHER:
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)
Datenmodell und Abfragefunktion für das Besucher-Tracking erstellen
Fügen Sie ein Datenmodell VisitorCount
hinzu, um Besucher zu erfassen. Es sollte Felder für die visitor
selbst sowie eine Ganzzahl counter
zur Verfolgung der Anzahl der Besuche enthalten. Fügen Sie dann eine neue Funktion hinzu (alternativ kann es ein Python-classmethod
sein) mit dem Namen fetch_counts()
, um die Top-Besucher in absteigender Reihenfolge abzufragen und zurückzugeben. Fügen Sie die Klasse und die Funktion direkt unter dem Text von fetch_visits()
ein:
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)
Worker-Code hinzufügen
Fügen Sie die neue Funktion log_visitors()
hinzu, um die Besucher über eine GET-Anfrage in /log
zu protokollieren. Es verwendet ein Wörterbuch/Hash, um die Anzahl der letzten Besucher zu verfolgen, wobei für eine Stunde so viele Aufgaben wie möglich freigegeben werden. Für jede Aufgabe werden alle Besuche desselben Besuchers gezählt. Mit den vorhandenen Zahlen aktualisiert die Anwendung dann alle entsprechenden VisitorCount
-Entitäten, die bereits in Datastore vorhanden sind, oder erstellt bei Bedarf neue Entitäten. Im letzten Schritt wird eine reine Textnachricht zurückgegeben, die angibt, wie viele Besucher sich aufgrund der Anzahl der verarbeiteten Aufgaben registriert haben. Fügen Sie diese Funktion zu main.py
direkt unter fetch_counts()
hinzu:
@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))
Haupt-Handler mit neuen Anzeigedaten aktualisieren
Zum Anzeigen der Top-Besucher aktualisieren Sie den Haupt-Handler root()
, um fetch_counts()
aufzurufen. Darüber hinaus wird die Vorlage aktualisiert, um die Anzahl der Top-Besucher und der letzten Besuche anzuzeigen. Fassen Sie die Besucherzahlen zusammen mit den letzten Besuchen aus dem Aufruf von fetch_visits()
zusammen und gliedern Sie sie in ein einzelnes context
-Objekt, das an die Webvorlage übergeben wird. Nachfolgend finden Sie den Code vor und nach dieser Änderung:
VORHER:
@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)
NACHHER:
@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)
Dies sind alle erforderlichen Änderungen für main.py
. Hier ist eine bildliche Darstellung dieser Aktualisierungen zur Veranschaulichung, um dir einen allgemeinen Überblick über die Änderungen zu geben, die du an main.py
vornimmst:
Webvorlage mit neuen Anzeigedaten aktualisieren
Die Webvorlage templates/index.html
muss aktualisiert werden, damit zusätzlich zur normalen Nutzlast der neuesten Besucher die Top-Besucher angezeigt werden. Kopieren Sie die Top-Besucher und deren Anzahl in eine Tabelle oben auf der Seite und rendern Sie die letzten Besuche wie zuvor. Die einzige andere Änderung besteht darin, die Zahl anzugeben, die über die Variable limit
angezeigt wird, anstatt sie hartzucodieren. Folgende Aktualisierungen sollten Sie an Ihrer Webvorlage vornehmen:
VORHER:
<!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>
NACHHER:
<!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>
Damit sind die notwendigen Änderungen zum Hinzufügen der Pull-Aufgaben für App Engine-Aufgabenwarteschlangen zur Beispiel-App für Modul 1 abgeschlossen. Ihr Verzeichnis stellt jetzt die Beispielanwendung für Modul 18 dar und sollte die folgenden Dateien enthalten:
$ ls README.md appengine_config.py queue.yaml templates app.yaml main.py requirements.txt
6. Zusammenfassung/Bereinigung
In diesem Abschnitt wird dieses Codelab abgeschlossen. Dazu wird die App bereitgestellt und geprüft, ob sie wie vorgesehen und in allen ausgegebenen Ausgabedaten funktioniert. Worker separat ausführen, um die Besucherzahlen zu verarbeiten Führen Sie nach der App-Überprüfung alle Bereinigungsschritte durch und erwägen Sie die nächsten Schritte.
Anwendung bereitstellen und prüfen
Sie müssen Ihre Pull-Warteschlange bereits eingerichtet haben, so wie es in diesem Codelab mit gcloud app deploy queue.yaml
bereits geschehen ist. Wenn dies abgeschlossen ist und die Beispielanwendung einsatzbereit ist, stellen Sie die Anwendung mit gcloud app deploy
bereit. Die Ausgabe sollte mit der App von Modul 1 identisch sein, mit der Ausnahme, dass sie jetzt einen „Top-Besucher“ enthält. ganz oben:
Im aktualisierten Web-Front-End werden die wichtigsten Besucher und die letzten Besuche angezeigt. Beachten Sie jedoch, dass die Besucherzahlen diesen Besuch nicht enthalten. Die App zeigt die Anzahl der vorherigen Besucher an, während eine neue Aufgabe gelöscht wird, wodurch sich die Anzahl dieses Besuchers in die Pull-Warteschlange erhöht. Eine Aufgabe, die noch verarbeitet werden muss.
Sie können die Aufgabe ausführen, indem Sie /log
aufrufen. Es gibt mehrere Möglichkeiten:
- Back-End-Dienst von App Engine
- Ein
cron
-Job - Einen Webbrowser
- Eine Befehlszeilen-HTTP-Anfrage (z. B.
curl
oderwget
)
Wenn Sie beispielsweise curl
verwenden, um eine GET-Anfrage an /log
zu senden, würde Ihre Ausgabe so aussehen, wenn Sie Ihre PROJECT_ID
angegeben haben:
$ curl https://PROJECT_ID.appspot.com/log DONE (with 1 task[s] logging 1 visitor[s])
Die aktualisierte Anzahl wird dann beim nächsten Website-Besuch berücksichtigt. Fertig!
Herzlichen Glückwunsch! Sie haben dieses Codelab zum Hinzufügen der Verwendung des App Engine-Pull-Warteschlangendienstes für Aufgabenwarteschlangen zur Beispiel-App erfolgreich abgeschlossen. Es kann jetzt in Modul 19 zu Cloud Pub/Sub, Cloud NDB und Python 3 migriert werden.
Bereinigen
Allgemein
Falls Sie vorerst fertig sind, empfehlen wir Ihnen, Ihre App Engine-Anwendung zu deaktivieren, um Gebühren zu vermeiden. Wenn Sie jedoch weitere Tests oder Experimente durchführen möchten, bietet die App Engine-Plattform ein kostenloses Kontingent. Solange Sie diese Nutzungsstufe nicht überschreiten, sollten Ihnen keine Kosten in Rechnung gestellt werden. Das bezieht sich auf die Rechenleistung. Es können jedoch auch Gebühren für relevante App Engine-Dienste anfallen. Weitere Informationen finden Sie auf der Preisseite. Wenn diese Migration andere Cloud-Dienste betrifft, werden diese separat abgerechnet. Lesen Sie in beiden Fällen gegebenenfalls den Abschnitt „Speziell für dieses Codelab“. weiter unten.
Zur vollständigen Offenlegung fallen bei der Bereitstellung auf einer serverlosen Computing-Plattform von Google Cloud wie App Engine geringfügige Build- und Speicherkosten an. Für Cloud Build und Cloud Storage gibt es ein eigenes kostenloses Kontingent. Die Speicherung dieses Images verbraucht einen Teil dieses Kontingents. Möglicherweise leben Sie in einer Region, in der es keine solche kostenlose Stufe gibt. Achten Sie daher auf Ihre Speichernutzung, um potenzielle Kosten zu minimieren. Bestimmte Cloud Storage-„Ordner“ sollten Sie Folgendes überprüfen:
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
- Die Speicherlinks oben hängen von Ihrer
PROJECT_ID
- und *LOC
*-Adresse ab, z. B. „us
“ wenn Ihre App in den USA gehostet wird.
Wenn Sie jedoch nicht mit dieser Anwendung oder anderen verwandten Migrations-Codelabs fortfahren und alles vollständig löschen möchten, beenden Sie Ihr Projekt.
Nur für dieses Codelab
Die unten aufgeführten Dienste gelten nur für dieses Codelab. Weitere Informationen finden Sie in der Dokumentation des jeweiligen Produkts:
- Für den App Engine-Dienst für Aufgabenwarteschlangen fallen gemäß der Preisübersicht für gebündelte Legacy-Dienste wie Aufgabenwarteschlangen keine zusätzlichen Kosten an.
- Der App Engine Datastore-Dienst wird von Cloud Datastore (Cloud Firestore im Datastore-Modus) bereitgestellt, der ebenfalls eine kostenlose Stufe hat. Weitere Informationen finden Sie auf der Preisseite.
Nächste Schritte
Bei dieser „Migration“ Sie haben der Beispiel-App für Modul 1 die Verwendung von Push-Warteschlangen für Aufgabenwarteschlangen hinzugefügt, indem Sie die Unterstützung für das Besucher-Tracking hinzugefügt und so die Beispiel-App für Modul 18 implementiert haben. Bei der nächsten Migration führen Sie ein Upgrade der App Engine-Pull-Aufgaben auf Cloud Pub/Sub durch. Seit Ende 2021 müssen Nutzer beim Upgrade auf Python 3 nicht mehr zu Cloud Pub/Sub migrieren. Mehr dazu erfahren Sie im nächsten Abschnitt.
Informationen zur Migration zu Cloud Pub/Sub finden Sie im Codelab zu Modul 19. Darüber hinaus sind weitere Migrationen zu berücksichtigen, z. B. Cloud Datastore, Cloud Memorystore, Cloud Storage oder Cloud Tasks (Push-Warteschlangen). Außerdem werden produktübergreifende Migrationen zu Cloud Run und Cloud Functions durchgeführt. Auf alle Inhalte der serverlosen Migrationsstation (Codelabs, Videos, Quellcode [falls verfügbar]) kann über das Open-Source-Repository zugegriffen werden.
7. Migration zu Python 3
Im Herbst 2021 hat das App Engine-Team die Unterstützung vieler gebündelter Dienste auf Laufzeiten der 2. Generation erweitert, die eine Laufzeit der 1. Generation haben. Daher müssen Sie nicht mehr von gebündelten Diensten wie App Engine Task Queue zu eigenständigen Cloud-Diensten oder zu Drittanbieterdiensten wie Cloud Pub/Sub migrieren, wenn Sie Ihre Anwendung zu Python 3 portieren. Das heißt, Sie können die Aufgabenwarteschlange in App Engine-Anwendungen in Python 3 weiterhin verwenden, solange Sie den Code so überarbeiten, dass aus Laufzeiten der nächsten Generation auf gebündelte Dienste zugegriffen wird.
Weitere Informationen zur Migration gebündelter Dienste zu Python 3 finden Sie im Codelab zu Modul 17 und im entsprechenden Video. Obwohl dieses Thema nicht für Modul 18 vorgesehen ist, finden Sie unten einen Link zu Python 3-Versionen der Modul 1-Anwendung, die in Python 3 portiert wurden und noch App Engine NDB verwenden. (Irgendwann wird auch eine Python 3-Version der Modul 18-Anwendung zur Verfügung gestellt.)
8. Zusätzliche Ressourcen
Im Folgenden finden Sie zusätzliche Ressourcen für Entwickler, die sich näher mit diesem oder verwandten Migrationsmodul und ähnlichen Produkten befassen. Dazu gehören Orte, an denen Sie Feedback zu diesen Inhalten geben können, Links zum Code und verschiedene Dokumentationen, die für Sie nützlich sein könnten.
Codelab-Probleme/Feedback
Wenn Sie Probleme mit diesem Codelab feststellen, suchen Sie bitte zuerst nach dem Problem, bevor Sie es einreichen. Links zum Suchen und Erstellen neuer Ausgaben:
Migrationsressourcen
Links zu den Repository-Ordnern für Modul 1 (START) und Modul 18 (FINISH) finden Sie in der folgenden Tabelle. Sie können auch über das Repository für alle App Engine-Codelab-Migrationen aufgerufen werden. oder eine ZIP-Datei herunterladen.
Codelab | Python 2 | Python 3 |
code (in dieser Anleitung nicht enthalten) | ||
Modul 18 (dieses Codelab) | – |
Onlinereferenzen
Im Folgenden finden Sie Ressourcen, die für diese Anleitung relevant sind:
App Engine-Aufgabenwarteschlange
- App Engine-Aufgabenwarteschlange
- Pull-Warteschlangen für App Engine-Aufgabenwarteschlangen
- Vollständige Beispielanwendung für die Pull-Warteschlange der App Engine-Aufgabenwarteschlange
- Pull-Warteschlangen für Aufgabenwarteschlangen erstellen
- Video zur Einführung der Pull-Warteschlange der Google I/O 2011 ( Beispiel-App für Wähler)
- Referenz zu
queue.yaml
queue.yaml
im Vergleich zu Cloud Tasks- Migrationsanleitung für Pull-Warteschlangen zu Pub/Sub
- Beispiel: Dokumentation von App Engine-Aufgabenwarteschlangen-Pull-Warteschlangen zu Cloud Pub/Sub
App Engine-Plattform
App Engine-Dokumentation
Python 2-Laufzeit der App Engine (Standardumgebung)
Python 3-Laufzeit von App Engine (Standardumgebung)
Unterschiede zwischen Python 2 und 3 Laufzeiten der App Engine (Standardumgebung)
Python 2 zu 3 Migrationsanleitung für App Engine (Standardumgebung)
Informationen zu Preisen und Kontingenten für App Engine
Einführung der App Engine-Plattform der zweiten Generation (2018)
Langzeitsupport für Legacy-Laufzeiten
Beispiele für die Migration der Dokumentation
Weitere Cloud-Informationen
- Python auf der Google Cloud Platform
- Google Cloud-Clientbibliotheken für Python
- „Immer kostenlos“ von Google Cloud Stufe
- Google Cloud SDK (
gcloud
-Befehlszeilentool) - Gesamte Google Cloud-Dokumentation
Videos
- Serverlose Migrationsstation
- Serverlose Expeditionen
- Google Cloud Tech abonnieren
- Google Developers abonnieren
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.