我怀疑如何以正确的方式将对象传递给烧瓶应用程序.
这个想法很简单.
我想为我的应用程序创建一个api,这意味着我的flask应用程序处理的http请求将触发我的主应用程序中的meothd.
为此,我需要烧瓶以这种或那种方式了解我的其他过程.
目前,我有类似的东西:
if __name__ == '__main__':
Logger = MyProcess()
app.run()
Run Code Online (Sandbox Code Playgroud)
我需要能够做到这样的事情:
@app.route('/nb_trendy')
def nb_trendy():
res = Logger.get_trendy()
return jsonify(res)
Run Code Online (Sandbox Code Playgroud)
这意味着我要么在Logger上给应用程序一个句柄,要么直接在应用程序中定义Logger.
但是在我能找到的每个解决方案中,我需要创建一个继承 app,要么覆盖__init__()并将对象作为参数,要么修改run()方法.
我现在这样做的方式是:
class MyFlask(Flask):
def __init__():
Flask.__init__()
Logger = MyProcess()
Run Code Online (Sandbox Code Playgroud)
这也是你做的方式,还是有更好的方法来做到这一点?
谢谢!
以下是此问题的更一般版本:Flask中的Web API
gir*_*uid 12
看看应用工厂,它应该做你想要的.你创建了一个工厂,它返回你要发送记录器的Flask应用程序 - 如下所示:
def create_app(logger_instance):
app = Flask(__name__)
app.config['LOGGER'] = logger_instance
return app
Run Code Online (Sandbox Code Playgroud)
然后在您的runserver.py中,您将创建并传入记录器:
from yourapp import create_app
if __name__ == '__main__':
logger = MyProcess()
app = create_app(logger)
app.run()
Run Code Online (Sandbox Code Playgroud)
完成后,您的应用可以参考内部的记录器app.config['LOGGER'].