Der flask
Befehl ist ein Click-Schnittstelle mit flask.cli.FlaskGroup
erstellt. Erstellen Sie Ihre eigene Gruppe und übergeben Sie ihr die Werksfunktion. Verwenden Sie app.shell_context_processor
, um Objekte zur Shell hinzuzufügen.
from flask import Flask
from flask.cli import FlaskGroup
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app(script_info=None):
app = Flask(__name__)
db.init_app(app)
...
@app.shell_context_processor
def shell_context():
return {'app': app, 'db': db}
return app
cli = FlaskGroup(create_app=create_app)
@cli.command
def custom_command():
pass
if __name__ == '__main__':
cli()
Führen Sie Ihre Datei anstelle des Befehls flask
aus. Sie erhalten die Click-Oberfläche mit Ihrer Fabrik.
FLASK_DEBUG=1 python app.py run
Idealerweise einen Einstiegspunkt erstellen und Ihr Paket in Ihrem env installieren. Dann können Sie das Skript als Befehl aufrufen. Erstellen Sie eine setup.py
Datei mit mindestens folgenden.
project/
app/
__init__.py
setup.py
from setuptools import setup, find_packages
setup(
name='my_app',
version='1.0.0',
packages=find_packages(),
entry_points={
'console_scripts': [
'app=app:cli',
],
},
)
pip install -e /path/to/project
FLASK_DEBUG=1 app run
Ihre eigene CLI ist weniger robust als das eingebaute in flask
Befehl. Da Ihr Objekt cli
mit Ihrem anderen Code definiert ist, führt ein Fehler auf Modulebene zum Fehlschlagen des Neuladeprogramms, da das Objekt nicht mehr importiert werden kann. Der Befehl flask
ist von Ihrem Projekt getrennt, so dass er nicht von Fehlern in Ihrem Modul betroffen ist.