Skip to main content
Snapshots sind Backups des Speichers einer App oder Datenbank. Apps und Datenbanken teilen sich dieselben drei Methoden:
  • client.apps.snapshots: list(app_id), create(app_id), restore(app_id, name, version_id)
  • client.databases.snapshots: list(database_id), create(database_id), restore(database_id, name, version_id)
Wie viele Snapshots du pro Tag erstellen kannst, hängt von deinem Plan ab (siehe Limits). Die Beispiele verwenden den client aus Client erstellen. app_id ist die ID einer deiner Apps: client.account.me() listet sie auf.

Snapshots auflisten

Einen Snapshot erstellen

create() wartet auf den Snapshot (mindestens 120 s, bevor ein Timeout eintritt). Ein großer Snapshot wird möglicherweise nicht rechtzeitig fertig: Die API antwortet dann mit 202 und das SDK gibt {'pending': True} zurück. Der Snapshot wird weiter erstellt und erscheint von selbst in list(), meist innerhalb von 2 Minuten. Andernfalls gibt die Methode {'pending': False, 'url': ..., 'key': ...} zurück.
Rufe create() nie erneut auf, um einen ausstehenden Snapshot zu prüfen: Das startet einen neuen und zählt gegen das tägliche Snapshot-Kontingent des Plans. Frage stattdessen list() ab.

Snapshot wiederherstellen

restore(id, name, version_id) nimmt den name und die version_id eines aufgelisteten Snapshots.

Einen Snapshot herunterladen

client.download_snapshot(url, dest) streamt eine Snapshot-Datei von ihrer signierten url (aus list() oder create()) auf die Festplatte und gibt den geschriebenen Pfad zurück. Die Methode ruft die API nicht auf: Der API-Schlüssel wird nie an den Speicher-Host gesendet. Nichts wird im Speicher gepuffert.
  • dest ist ein Dateipfad oder ein Verzeichnis, um den entfernten Dateinamen beizubehalten. Ein Pfad, der auf / endet, wird als Verzeichnis angelegt.
  • Die Daten werden in eine .part-Datei geschrieben, die nach Abschluss umbenannt wird, sodass ein fehlgeschlagener Download nie eine frühere Datei überschreibt.
  • Es gibt kein Timeout für den gesamten Download: timeout begrenzt jeden Lesevorgang.
Mit AsyncSquareCloud lautet es await client.download_snapshot(url, dest). Eine abgelaufene oder ungültige URL wirft einen SquareCloudAPIError mit dem HTTP-Status des Speicher-Hosts und UNKNOWN_ERROR. Ein Ziel, das sich nicht schreiben lässt, wirft einen OSError.

Konto-Snapshots

client.account.snapshots(scope=None) listet jeden Snapshot des Kontos auf, optional nur "applications" oder "databases" (reines Keyword-Argument). Dafür ist ein aktiver Plan nötig, und die Methode teilt sich das Rate Limit der Netzwerk-Endpoints (429 RATE_LIMITED).

Limits

  • create() ist auf einen Aufruf pro 180 Sekunden und auf ein tägliches, planabhängiges Kontingent begrenzt: Eine Überschreitung des Kontingents ergibt 429 DAILY_SNAPSHOTS_LIMIT_REACHED.
  • Während eine Wiederherstellung läuft, ergibt das Löschen der App oder das Starten der Datenbank 403 RESTORE_IN_PROGRESS.

Nächste Schritte

Datenbanken

Datenbanken erstellen und verwalten.

API-Referenz für Snapshots

Die REST-Endpunkte hinter diesen Methoden.

Snapshots über die CLI

Dieselben Aktionen im Terminal.