2017-12-26 2 views
0

In diesen Link in flaskr.py http://flask.pocoo.org/docs/0.12/tutorial/setup/#tutorial-setupWarum os.path.join (app.root_path, 'bubbitr.db')?

In-Datei:

app = Flask(__name__) # create the application instance :) 
app.config.from_object(__name__) # load config from this file , flaskr.py 

# Load default config and override config from an environment variable 
app.config.update(dict(
    DATABASE=os.path.join(app.root_path, 'flaskr.db'), 
    SECRET_KEY='development key', 
    USERNAME='admin', 
    PASSWORD='default' 
)) 
app.config.from_envvar('FLASKR_SETTINGS', silent=True) 

Die Erklärung für die Linie

DATABASE=os.path.join(app.root_path, 'flaskr.db'), 

ist:

O Vermittlungssysteme kennen das Konzept eines aktuellen Arbeitsverzeichnisses für jeden Prozess. Leider können Sie sich in Webanwendungen nicht darauf verlassen, da Sie möglicherweise mehrere Anwendungen im selben Prozess haben.

Aus diesem Grund kann das Attribut app.root_path verwendet werden, um den Pfad zur Anwendung abzurufen. Zusammen mit dem os.path-Modul können Dateien dann leicht gefunden werden. In diesem Beispiel platzieren wir die Datenbank direkt daneben.

Kann jemand es mit Beispiel erklären, wie ich die Erklärung nicht verstehen kann?

+0

Informationen zum aktuellen Arbeitsverzeichnis in Webanwendungen finden Sie in der Dokumentation zu mod_wsgi unter http://modwsgi.readthedocs.io/en/develop/user-guides/application-issues.html#application-working- Verzeichnis –

Antwort

0

Ich verstehe es als das: In einem normalen Programm würden Sie zunächst os.chdir(PATH) und dann einfach flaskr.db öffnen. Aber während Flask mehrere Anwendungen startet (aka app) in einem Prozess, jede Anwendung in einem separaten Thread, aber sie alle teilen das gleiche "aktuelle Verzeichnis" als das aktuelle Verzeichnis pro Prozess und nicht pro Thread ist. Um sicher zu sein, sollten Sie immer mit absoluten Verzeichnissen arbeiten und app.root_path verwenden.

Verwandte Themen