Команда CLI Flask отсутствует в файле __init__.py
Я пытаюсь добавить commands
в мое приложение Flask.
Это мое __init__.py
файл:
import os
from flask import Flask
from flask_cors import CORS
from flask_mongoengine import MongoEngine
app = Flask(__name__)
CORS(app)
app.config.from_object(os.environ['APP_SETTINGS'])
db = MongoEngine(app)
import slots_tracker_server.views # noqa
Если я добавлю к этому:
@app.cli.command()
def test_run():
print('here')
я могу бежать flask test_run
без проблем, но если я попытаюсь переместить код в другой файл, например: commands.py
Я получаю ошибку Error: No such command "test_run".
при попытке запустить команду.
Что мне не хватает?
2 ответа
Решение
Использование click
(библиотека команд Flask), чтобы зарегистрировать ваши команды:
# commands.py
import click
@click.command()
def test_run():
print('here')
В вашем __init__.py
импортировать и зарегистрировать команды:
# __init__.py
from yourapp import commands
from flask import Flask
app = Flask(__name__)
app.cli.add_command(commands.test_run)
Посмотрите на официальные документы
В тебе commands.py
Вы можете добавить функцию регистрации следующим образом:
def register(app):
@app.cli.command(name='test_run', help="test_run command")
def register_test_run():
test_run()
# other commands to register
И тогда в вашем __init__.py
импортировать эту функцию регистра
from flask import Flask
app = Flask(__name__)
from commands import register
register(app)
Обратите внимание, что вы должны импортировать register
после того, как вы инициализировали app
,