October 1, 2019
Ich habe vor einer Woche angefangen, Python zu lernen und begann, Dinge auf eigene Faust auszuprobieren. Klassen, Variablen, Schleifen und Pakete - all die Programmiersachen waren so cool, aber die eigentliche Herausforderung begann, als ich anfing, an der Erstellung eines RESTful-Services und dem DEPLOY zu arbeiten.
Hier ist die Geschichte - Ich habe vor einer Woche angefangen, Python zu lernen und begann, Dinge auf eigene Faust auszuprobieren. Klassen, Variablen, Schleifen und Pakete - all die Programmiersachen waren so cool, aber die wirkliche Herausforderung begann, als ich anfing, an der Erstellung eines RESTful-Services und dem DEPLOY zu arbeiten.
Ich werde das Schritt-für-Schritt-Verfahren teilen, dem ich gefolgt bin, damit deine Anwendung letztendlich genauso wie meine in der Cloud landet :)
Angenommen, dass Python und Pip auf Ihrem Rechner installiert sind, beginnen wir damit, einen Anwendungsordner zu erstellen. Ich nenne ihn python-service-deployment.
Schritt 1: Virtuelle Umgebung:
Die virtuelle Umgebung hilft, die Versionskonflikte der Pakete zu lösen. Alle Pakete, die Sie für Ihre Anwendung installieren, werden in dieser virtuellen Umgebung gespeichert. Wenn Sie eine andere Version desselben Pakets für die andere Anwendung installieren möchten, ja, Sie haben es richtig erraten, wird es in seiner eigenen virtuellen Umgebung gespeichert.
Hier ist der Weg, um es zu erstellen: Navigiere in deinem Arbeitsverzeichnis im Terminal (Eingabeaufforderung in Windows) und gib folgendes ein:
Javascript python3 -m venv my-venv
Dies wird das Verzeichnis my-venv erstellen, das eine Kopie des Python-Interpreters und der unterstützenden Dateien enthält.
Um die virtuelle Umgebung auf dem Mac zu aktivieren, führen Sie aus:
JavaScript Quelle my-venv/bin/activate
Um auf Windows zu aktivieren, führen Sie aus:
Javascript my-venv\scripts\activate.bat
Schritt 2: Konfigurieren des Python-Interpreters:
Mein Lieblingseditor ist vscode, welcher ist deiner :)
Lassen Sie uns VSCode so konfigurieren, dass der Python-Interpreter verwendet wird, der sich in der virtuellen Umgebung "my-venv" befindet.
Öffnen Sie die Befehlspalette im Ansichtsmenü oder mit Command+Shift+P (Strg+Shift+P unter Windows) und geben Sie ein:
Python: Wähle Interpreter
Wie oben hervorgehoben, wählen Sie den im virtuellen Umfeld gespeicherten Interpreter aus, in meinem Fall wird es der letzte in der Liste sein. Jetzt ist Ihr Visual Studio Code bereit, Ihre Python-Kenntnisse zu interpretieren :)
Schritt 3: Flask-RESTful:
Flask-RESTful ist eine Erweiterung des Microframeworks Flask zum Erstellen von REST-APIs. Lass uns das installieren.
Javascript pip install flask-restful
Dies wird Flask-Restful und seine Abhängigkeiten innerhalb der von uns erstellten virtuellen Umgebung installieren.
Schritt 4: REST-API erstellen:
Eine RESTful API verwendet HTTP-Anfragen, um Daten abzurufen, zu aktualisieren, zu erstellen und zu löschen.
Lass uns jetzt in den Code eintauchen und mit der Implementierung dieser Verben beginnen. Ich versuche, eine einfache RESTful API zu erstellen, die das TODO-Element basierend auf der ID anzeigt und auch ein neues TODO-Element zur TODO-Liste hinzufügt.
Lassen Sie uns damit beginnen, die Datei todo.py zu erstellen, die die Klasse Todo haben wird und die GET- und POST-Verben implementieren wird. Ich habe die todo.py-Datei im Ordner Ressourcen abgelegt, um sie etwas strukturierter zu halten.
```python
from flask_restful import Resource
todos = [
{
"id": 1,
"item": "Beispielanwendung erstellen",
"status": "Abgeschlossen"
},
{
"id": 2,
"item": "In Heroku bereitstellen",
"status": "Offen"
},
{
"id": 3,
"item": "Veröffentlichen",
"status": "Offen"
}
]
class Todo(Resource):
def get(self, id):
for todo in todos:
if id == todo["id"]:
return todo, 200
return "Element nicht gefunden für die ID: {}".format(id), 404
def put(self, id):
for todo in todos:
if id == todo["id"]:
todo["item"] = request.form["data"]
todo["status"] = "Offen"
return todo, 200
return "Element nicht gefunden für die ID: {}".format(id), 404
```
Wenn ich den obigen Code breche,
In der ersten Zeile habe ich Resource aus flask_restful importiert, dies wird den Zugriff auf die HTTP-Methoden wie GET, PUT, POST und DELETE ermöglichen.
Von Zeile 3 bis 20 handelt es sich idealerweise um ein Todos-Objekt, das sich in einer Datenbank befinden sollte, aber aus Gründen der Einfachheit habe ich es hier definiert.
Interessante Dinge beginnen ab Zeilennummer 21. Die Klasse Todo hat die Methoden GET und PUT definiert. Wenn der Benutzer die URL /Todo/{id} anfordert, wird je nachdem, ob es sich um eine GET- oder PUT-Anfrage handelt, die entsprechende Methode aufgerufen. Aber wir haben die Routen noch nicht definiert? Ja, lass uns das jetzt tun.
Lassen Sie uns die Datei app.py im Stammverzeichnis erstellen.
```python
Python
from flask import Flask
from flask_restful import Api
from resources.todo import Todo
app = Flask(__name__)
api = Api(app)
api.add_resource(Todo, "/todo/")
if __name__ == "__main__":
app.run()
```
Hier habe ich die erforderlichen Pakete importiert, einschließlich der Todo-Klasse, die wir gerade erstellt haben. Außerdem die üblichen Dinge wie das Einrichten der App und der API.
Die Routing-Logik befindet sich in Zeile 9. Daher wird das URL-Muster "/todo/<id>" die Anfrage an die Todo-Klasse weiterleiten. Der Anforderungstyp, die Art und Weise, wie er aufgerufen wird, wird die "Get" oder "Put"-Methode analysieren, die in der Klasse Todo definiert ist. Sie können dies mit einem beliebigen verfügbaren REST-Client ausprobieren.
Schritt 5: Machen Sie es Heroku-fertig und deployen Sie es:
Großartig, jetzt haben Sie die API erstellt, schauen wir uns an, wie wir sie hosten können.
Installiere gunicorn, das ein WSGI ist, um Python-Anwendungen auf Heroku auszuführen.
Python pip install gunicorn
Erstellen Sie nun eine Procfile ohne Erweiterung im Stammverzeichnis der Anwendung, das Heroku dabei hilft zu verstehen, welcher Teil Ihres Codes ausgeführt werden soll, um die Anwendung zu starten. Folgendes sollte in unserem Fall hinzugefügt werden:
Javascript web: gunicorn app:app
Setze die Python-Version in der Datei runtime.txt im Stammverzeichnis.
Python-3.6.7
Erstellen Sie jetzt die requirements.txt-Datei, um die Abhängigkeiten Ihrer Anwendung aufzulisten. Führen Sie die folgende Zeile im Terminal (Eingabeaufforderung in Windows) aus.
Python pip freeze > requirements.txt
Nun der Heroku-Teil: Sobald Sie die Heroku CLI heruntergeladen haben, gehen Sie zum Terminal (Eingabeaufforderung) und melden Sie sich bei Heroku an, indem Sie den folgenden Befehl verwenden. Sie werden aufgefordert, Ihre Anmeldeinformationen einzugeben, um Ihre Sitzung zu authentifizieren.
Javascript heroku login
Sobald Sie erfolgreich angemeldet sind, erstellen Sie die Heroku-App, übernehmen Sie die Änderungen und schieben Sie sie mit den folgenden Befehlen.
heroku erstellen— wird eine App auf Heroku erstellengit init— Initialisiere lokales Git-Repositoryheroku git:remote -a "Name des Remote-Repository"— verbindet mit dem entfernten Repositorygit commit -am "Erster Commit"— überträgt alle Dateiengit push heroku master— schiebt die Änderungen nach Heroku
Nach dem erfolgreichen Deployment können Sie die GET-Methode testen, indem Sie "https://[heroku domain]/todo/1(https://quiet-refuge-59730.herokuapp.com/todo/1)" durchsuchen.
Das fasst zusammen, was ich getan habe, um es zum Laufen zu bringen, und wenn du bis hierher gekommen bist, hoffentlich hat dir das auch geholfen.
Als nächstes werde ich darüber schreiben, wie ich AWS Lambda und API Gateway nutze, um RESTful-Services in Python zu erstellen. Bleiben Sie dran.
Der gesamte Code für dieses Beispiel kann gefunden werden.hierBitte geben Sie einen Text ein, den ich für Sie übersetzen soll.