2

我正在尝试添加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".

我错过了什么?

4

2 回答 2

4

使用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)

看看官方文档

于 2018-08-03T03:11:32.553 回答
1

在您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.

于 2018-08-03T11:05:39.700 回答