与Flask-Script中的Flask应用程序交互

时间:2014-04-14 15:47:57

标签: flask flask-script

我有一个烧瓶应用程序正在运行,我想要一些可以与之交互的东西。让我用下一个例子解释一下:

Flask app:

from flask import Flask

MyApp = Flask(__name__)

mytext = "Hello World!"

@app.route('/')
def hello_world():
    return mytext

def text_reload():
    global mytext
    mytext = "Hey! I have been reloaded!"

if __name__ == '__main__':
    MyApp.run()

Flask-Script(manager.py):

from flask.ext.script import Manager
from myapp import MyApp

manager = Manager(MyApp)

@manager.command
def reload_mytext():
    **DO SOME MAGIC HERE**

if __name__ == '__main__':
    manager.run()

reload_mytext()在应用内调用text_reload()功能。

我应该用什么魔法来完成这些东西?这样的事情甚至可能吗?

1 个答案:

答案 0 :(得分:0)

我认为app.app_context()正是您所寻找的。 但是你需要首先制作上下文。

def _make_context():
    return dict(app=app, db=db, models=models)

manager = Manager(create_app)
manager.add_command("livereload", liveReloadServer, Shell(make_context=_make_context))

然后:

class liveReloadServer(Command):
    """prints hello world"""
    def run(self):
        with app.app_context():
            server = Server(app.wsgi_app)
            app.config['LIVERELOAD'] = True
            server.serve(port=8080)