Arbeiten mit einem globalen singleton im Kolben (WSGI), muss ich befürchten, race conditions?

Des hello-world-demo für Kolben:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Was ist, wenn ich Sie modifiziert habe dies so:

from flask import Flask
app = Flask(__name__)

a = 1
b = 2
c = 3

@app.route("/")
def hello():
    a += 1
    b += a
    c += b
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Verstehe ich WSGI-Anwendung kann mehrere threads. Die hello - Funktion kann ausgeführt werden, auf mehrere threads zur gleichen Zeit, und dann hätten wir eine race-Bedingung. Ist das richtig? Wenn der obige code ist nicht thread-sicher, was kann ich tun, um es thread-sicher?

Vermeidung von globals ist eine mögliche Lösung, aber die kann man immer vermeiden globals? Was ist, wenn ich etwas will, wie ein python-Objekt-cache?

InformationsquelleAutor Buttons840 | 2012-04-16
Schreibe einen Kommentar