Django Model: Feld mit nur einem Wert

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
danims
User
Beiträge: 29
Registriert: Montag 19. Februar 2007, 20:23
Wohnort: Bern, Schweiz

Hallo

In meiner Django App frage ich eine externe REST API ab. Dazu brauche ich ein Authentication Token, welches maximal 5 Stunden gültig ist. Also möchte ich dieses Auth Token zwischenspeichern, damit ich mich nicht bei jeder REST Anfrage neu anmelden muss.

Wie würdet ihr das bewerkstelligen? Ich möchte es eigentlich im Model speichern, aber es gibt ja immer nur einen Wert (die alten Auth tokens brauche ich ja nicht mehr). Würdet ihr einfach einen Wert in die Tabelle speichern und diesen alle 5h überschreiben? Gibt es bessere Lösungen?

Danke
deets

Das kommt darauf an, in wessen Namen du deise REST API abfragst. Wenn das pro Anwendung nur einmal ist, dann kannst du doch einfach ein Config-Model oder sowas machen, das genau einmal existiert, und eine Spalte fuer das Token + eine fuer dessen letzte Abholung hat.
Benutzeravatar
danims
User
Beiträge: 29
Registriert: Montag 19. Februar 2007, 20:23
Wohnort: Bern, Schweiz

Danke für deine Antwort.

Mittlerweile habe ich eine super Möglichkeit gefunden. Django bietet ein Caching module (https://docs.djangoproject.com/en/dev/topics/cache/), welches sich super dafür einsetzen lässt. So einfach gehts:

Code: Alles auswählen

if not cache.get('cachedanswer'):
    result = api.request('test')
    cache.set('cachedanswer', result, 3600)
    return result
else:
    return cache.get('cachedanswer')
Damit ist die Antwort für eine Stunde gecached. Funktioniert super!
Antworten