[PYTHON] Verwenden Sie DynamoDB als Sperrmanager

Dieser Beitrag ist eine persönliche Meinung / ein Memo und repräsentiert nicht das Unternehmen, zu dem ich gehöre.

Bedingte DynamoDB-Aktualisierung

DynamoDB verfügt über eine Funktion namens ** Conditional Update **, die atomare Aktualisierungsvorgänge ermöglicht.

Zum Beispiel sieht es wie folgt aus. --Put, wenn es keinen Artikel mit einem bestimmten Schlüssel gibt --Update, wenn es ein bestimmtes Attribut eines bestimmten Elements gibt

Weitere Informationen finden Sie im DynamoDB Developer Guide (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html).

Sperrverwaltung mit bedingter Aktualisierung

Durch Anwenden dieses ** "Setzen, wenn es keinen Artikel mit einem bestimmten Schlüssel gibt" ** und Lesen des Vorhandenseins oder Nichtvorhandenseins des Artikels wie folgt kann die Sperrverwaltung implementiert werden.

Gehen Sie mit der Taste A zu DynamoDB, um den Artikel zu platzieren. Zu diesem Zeitpunkt ist der Gegenstand von Schlüssel A

Wenn Sie es mit Python und Boto implementieren, sieht es so aus.

lock_key


def lock_key(key):
  try:
    dynamodb.put_item(
      'TABLE_NAME',
      {'key' : { "S" : key }},
      expected = {
        'key' : { "Exists" : False }
      }
    )
    return True
  except Exception,e:
    return False

Verwenden Sie den Dateinamen als Schlüssel, um das Element in die Tabelle aufzunehmen. Gibt True zurück, wenn der Put ohne vorhandenes Element erfolgreich ist, andernfalls False.

Anwenden, um das Hochladen von Dateien in S3 zu verwalten

Ich habe ein Tool geschrieben, um das Hochladen von Dateien in S3 mithilfe dieses Mechanismus zu verwalten. https://gist.github.com/imaifactory/6132f8a60461584b4613

Da Sie sich keine Gedanken über Dateien machen müssen, die nach dem erneuten Hochladen hochgeladen wurden, können Sie eine große Anzahl von Dateien parallel hochladen. Selbst wenn der Vorgang in der Mitte fehlschlägt, können Sie erneut beginnen. Tatsächlich habe ich diesen Mechanismus verwendet, um 3 bis 4 Monate lang täglich etwa 8.000 bis 10.000 Protokolldateien an S3 zu übertragen, aber ich konnte ohne Auslassungen und Duplikate arbeiten.

Die s3-Synchronisierung von Awscli ist praktisch, aber wenn Sie sich Sorgen über Auslassungs- / Vervielfältigungsmaßnahmen machen, um sie für die Produktion zu verwenden, möchten Sie sie möglicherweise so implementieren.

冪 etc.! 冪 etc.!

Recommended Posts

Verwenden Sie DynamoDB als Sperrmanager
Verwenden Sie Remotte als Benutzer
Verwenden Sie Pymol als Python-Bibliothek
Verwenden Sie Blender als Python-Modul
Verwenden Sie das elektronische Papiermodul als Aufgabenliste
Verwenden Sie DynamoDB mit Python
Property Decorator verwenden?
Verwenden Sie KNP als Universal Dependency Parser mit spaCy
Verwendung von Fujifilm X-T3 als Webcam unter Ubuntu 20.04
Verwendung von cuML SVC als Gridsearch-CV-Klassifikator
[Python] Verwenden Sie Daten im JSON-Format als Objekt vom Typ Wörterbuch
So verwenden Sie eine andere Datei als .fabricrc als Konfigurationsdatei
[Python] Verwenden Sie eine Zeichenfolgenfolge
Anfänger fügen Festplatten hinzu und verwenden sie als Dateisystem (´ ・ ω ・ `)
Betätigen Sie die CapsLock-Taste als Strg-Taste mit dem Befehl xmodmap.
Verwenden Sie Jupyter Notebook als Komponententest oder manuelles Erstellungswerkzeug
Verwenden Sie youtube_dl als Python-Modul. Anhang) Nico Nico Video HTTP 403 Fehler