Ich habe Code in meiner Flask-App eingerichtet, der einige Datenbankeinträge in Mongo initialisiert und Cron-Jobs plant. Wie kann ich dies beim Start des Servers ausführen, nicht aber beim Ausführen von Tests?Flask-Setup-Code einmal ausgeführt, aber nicht während der Tests
ist mein Projekt strukturiert:
/crypto
__init__.py
main.py
/templates
/statis
/tests
tests.py
wo das App-Objekt und Setup-Code in main.py
und sieht aus wie
app = Flask(__name__)
...
with app.app_context():
# do database setup
# do cron job setup
Mein test.py
Bedürfnis from crypto import main
ausführen, um das App-Objekt zuzugreifen, aber die Akt des Importierens führt auch den Setup-Code, den ich nicht will. Gibt es etwas, das mir strukturell hier fehlt, das das lösen würde?
@Hi Ich bin Frogatto, habe ich versucht, if __name__ == "__main__":
um den Setup-Code hinzufügen, aber dann, dass Code nicht ausgeführt, wenn ich den Server lokal mit flask run
starten.
danke für die Antwort! Ich habe es versucht, aber 'flash run' führt den Code in diesem Abschnitt nicht aus. – Mike
@Mike Es gibt viele Optimierungen, die Sie anwenden können, um das Problem zu lösen: (1) Führen Sie den Server im Code aus, der keine 'flash run' CLI verwendet. [Beispiel] (https://github.com/openshift-quickstart/flask-example/blob/master/wsgi/myflaskapp.py). (2) Vermeiden Sie den Import von 'main.py', indem Sie _the common_ part trennen und diesen Common Part aus' main.py' importieren und das zweite Modul, aus dem Sie 'main.py' importieren wollen. (3) Verwenden Sie CLI, um den Server zu initialisieren. [Beispiel] (http://flask.pocoo.org/docs/0.12/tutorial/dbinit/). –