Команда 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,

Другие вопросы по тегам