gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:31:44 25 4
gpt4 key购买 nike

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

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 ""

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

 * 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)

所以我更新了我的代码:

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 不再可能了?

最佳答案

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

解决方法:

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

关于flask - 如何通过命令行flask run启动Flask和Flask-SocketIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51669415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com