首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过命令行Flask run启动flask和Flask-SocketIO

如何通过命令行Flask run启动flask和Flask-SocketIO
EN

Stack Overflow用户
提问于 2018-08-03 17:24:06
回答 2查看 3.4K关注 0票数 2

我从一个定义了几个has服务的应用程序开始。我能够通过命令行上的flask run启动应用程序。之后,我集成了flask-sckoetio (即我添加了from flask_socketio import SocketIO, emitsocketio = SocketIO(app)行),现在我不能再通过flask run启动服务器了。

代码语言:javascript
复制
from flask import Flask, request, abort
from flask_socketio import SocketIO, emit


app = Flask(__name__)
socketio = SocketIO(app)

@app.route('/do_sth', methods=['POST'])
def do_sth():
    return ""

我在控制台上收到以下消息:

代码语言:javascript
复制
 * Serving Flask-SocketIO app "webservices.py"
 * Forcing debug mode off
WebSocket transport not available. Install eventlet or gevent and gevent-websocket for improved perform
ance.
c:\program files\python36\lib\site-packages\flask_socketio\__init__.py:496: Warning: Silently ignoring
app.run() because the application is run from the flask command line executable.  Consider putting app.
run() behind an if __name__ == "__main__" guard to silence this warning.
  use_reloader=use_reloader, **kwargs)

所以我将我的代码更新为:

代码语言:javascript
复制
from flask import Flask, request, abort
from flask_socketio import SocketIO, emit


app = Flask(__name__)
socketio = SocketIO(app)

@app.route('/do_sth', methods=['POST'])
def do_sth():
    return ""

if __name__ == '__main__':
    socketio.run(app)

但我仍然收到相同的错误消息,服务器无法启动。但是,如果我只执行脚本,一切都会正常工作。但是为什么flask run不再可能了呢?

EN

回答 2

Stack Overflow用户

发布于 2018-08-23 18:40:14

发生这种情况的原因是,只有在使用python file.py等命令直接调用文件时,变量__name__才等于"__main__"。但是您的文件被导入了,并且他的__name__变量被设置为导入它们的模块的名称。

解决方案:

只需删除字符串if __name__ == "__main__":

票数 1
EN

Stack Overflow用户

发布于 2018-08-20 18:21:53

您是否安装了错误消息中提到的eventletgevent

它们也列在flask-socketIO documentation中的requirements下。请先尝试安装它们。

安装其中一个之后,您可以只使用flask run启动您的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51669415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档