我用,因此目前推出如下烧瓶中的应用程序工作:如何让“python -m flask run”运行主函数?
起始命令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,它需要包装烧瓶应用程序和要运行的套接字实例。 从文档,看来我应该能够从主运行:
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")
但我从来没有看到预期的输出,并且socket服务器似乎并没有运行。对我来说,这听起来像烧瓶忽略了主要功能,仍然只是启动它发现的任何Flask
实例。
为什么会发生这种情况,即是否有任何文件?或者,我在做Flask-SocketIO集成是否错误?
'if __name__ ==“__main __”'只会在您执行该文件时执行,而不是从其他位置导入时执行。 'python -m flask'寻找一个名为'app'或'application'的变量或一个烧瓶对象。有没有原因,你不通过'python mymainfile.py'启动? – syntonym
这对我来说很有意义。 Flask-SocketIO的文档有一个['flask run'的简短段落](http://flask-socketio.readthedocs.io/en/latest/#initialization),但我不明白它应该如何工作。启动代码是从一个非常复杂的Node脚本执行的,我没有创建它,但是我看不到'python x.py'的动机。 –