如何制作" python -m flask run"运行主要功能?

时间:2016-11-21 10:39:04

标签: python flask flask-socketio

我正在使用当前发布的烧瓶应用程序,如下所示:

起始命令为python -m flask run,其中FLASK_APP指向__init.py__

__init.py__只是将变量app设置为Flask的实例:

from .app import get_app

app = get_app()

if __name__ == "__main__":
    # do nothing
    pass

在我看来,烧瓶检测到此模块中设置的Flask的全局实例并运行它们,即使我找不到任何关于此的文档。

现在我想集成Flask-SocketIO,它需要包装烧瓶应用程序并运行套接字实例。 从文档中,似乎我应该能够从main运行它:

from .app import get_app

app, sio = get_app() # returns a Flask and a SocketIO instance now

if __name__ == "__main__":
    sio.run(app)
    print("Flask-SocketIO server launched")

但我从未看到预期的输出,并且套接字服务器似乎没有运行。对我来说,这听起来像烧瓶忽略了主要功能,仍然只是启动它找到的任何Flask实例。

为什么会发生这种情况,即是否有任何相关文件?或者,我对Flask-SocketIO集成做错了吗?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Flask 0.11和新的cli,那么运行应用程序所需要做的就是flask run。 Flask-SocketIO会覆盖此命令的实现,并添加必要的魔法以使一切正常。

您可以移除if __name__ == '__main__'块,除非您还希望能够使用旧的Flask 0.11之前的方式启动服务器。