如何制作 "python -m flask run" 运行 主要功能?
How to make "python -m flask run" run main function?
我正在使用当前启动如下的烧瓶应用程序:
起始命令是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
的全局实例并 运行s 它们,即使我找不到任何关于此的文档。
现在我想集成 Flask-SocketIO,这需要包装 flask 应用程序和套接字实例 运行。
从文档看来,我应该可以从 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")
但是我从来没有看到预期的输出,套接字服务器似乎没有 运行ning。对我来说,这听起来像是烧瓶忽略了主要功能,仍然只是启动它找到的任何 Flask
实例。
为什么会发生这种情况,即是否有任何相关文档?或者,我做错了 Flask-SocketIO 集成吗?
如果您使用的是 Flask 0.11 和新的 cli,那么您 运行 您的应用程序所需要做的就是 flask run
。 Flask-SocketIO 覆盖了这个命令的实现并添加了必要的魔法来使一切正常工作。
并且您可以删除 if __name__ == '__main__'
块,除非您还希望能够使用旧的 pre-Flask 0.11 方式启动服务器。
我正在使用当前启动如下的烧瓶应用程序:
起始命令是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
的全局实例并 运行s 它们,即使我找不到任何关于此的文档。
现在我想集成 Flask-SocketIO,这需要包装 flask 应用程序和套接字实例 运行。 从文档看来,我应该可以从 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")
但是我从来没有看到预期的输出,套接字服务器似乎没有 运行ning。对我来说,这听起来像是烧瓶忽略了主要功能,仍然只是启动它找到的任何 Flask
实例。
为什么会发生这种情况,即是否有任何相关文档?或者,我做错了 Flask-SocketIO 集成吗?
如果您使用的是 Flask 0.11 和新的 cli,那么您 运行 您的应用程序所需要做的就是 flask run
。 Flask-SocketIO 覆盖了这个命令的实现并添加了必要的魔法来使一切正常工作。
并且您可以删除 if __name__ == '__main__'
块,除非您还希望能够使用旧的 pre-Flask 0.11 方式启动服务器。