2014-09-15 14 views
12

Sto cercando di costruire y prima webservice utilizzando Python Flask. Non sono in grado di capire cosa significa per Flask emettere il riavvio con il reloader, ogni volta che eseguo la mia app.Python Flask, Riavvio con ricaricatore: Che cosa vuol dire

Questo è il mio codice.

#!venv/bin/python 
from flask import Flask 
from flask import request 


def buildCache(): 
    print 'Hello World' 

buildCache() 

app = Flask(__name__) 


@app.route('/search') 
def index(): 
    query = request.args.get('query','', type=str); 
    return query 


if __name__ == '__main__': 
    app.run(debug = True) 

quando l'eseguo

venv/bin/python ./app.py 
Hello World 
* Running on http://127.0.0.1:5000/ 
* Restarting with reloader 
Hello World 

Non capisco perché il metodo buildCache viene chiamato due volte? Sembra essere correlato a "Riavviare con il reoloader", cosa significa? Come faccio ad assicurarmi che buildCache venga eseguito solo una volta, prima dell'avvio del server.

risposta

10

Questo "ricarica" ​​il codice ogni volta che apporti una modifica in modo che non è necessario riavviare manualmente l'applicazione per vedere i cambiamenti. E 'molto utile quando si apportano modifiche frequenti.

è possibile disattivare ricaricare impostando il parametro di debug su false.

app.run(debug=False) 

"[Se debug=True] il debugger entreranno in gioco quando si verifica un'eccezione non gestita e il server integrato verrà automat camente ricaricare l'applicazione se vengono rilevati cambiamenti nel codice "

Fonte:. http://flask.pocoo.org/docs/0.10/api/#flask.Flask.debug

+1

ma non ne faccio una modifica del codice, ho un solo eseguendo il programma e chiama ancora la mia funzione di buildCache due volte, perché? – konquestor

+0

Quando si avvia il server con il ricaricamento, la prima volta farà le cose due volte, come per testare il ricaricamento. La mia ipotesi è che ciò avvenga in modo tale che l'applicazione si trovi nello stesso stato in cui si troverà dopo le ricariche successive, quindi non vi è alcuna differenza qualitativa tra la prima esecuzione e le successive ricariche. Non so come disabilitarlo. – osa

1

Da documentazione pallone: ​​

Se si attiva il supporto di debug il server verrà ricaricato in sé su modifiche al codice, e fornirà anche un debugger utile se le cose vanno male.

Vedere this.

applicazione inizio Prova e poi fare touch app.py, se la modalità di debug verrà abilitare server di applicazioni sarà ricaricata.

+1

ma non sto cambiando alcun codice, ho appena eseguito il mio codice e sembra che stia chiamando buildCache due volte? Perché? qualsiasi idea – konquestor

+0

Basta il file 'touch' –