Flask SocketIO引发了一个ValueError

问题描述 投票:0回答:2

我正在尝试设置一个可以使用SocketIO的Flask服务器,但是它不起作用并且它返回以下错误:

ValueError: signal only works in main thread

这是我对烧瓶环境的设置:

export FLASK_APP=application.py
export FLASK_DEBUG=1

然后我像往常一样运行,并且在我开始使用SocketIO之前会工作:

flask run

这是我的application.py代码,这很简单,但也许有帮助:

import os

from flask import Flask
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY")
socketio = SocketIO(app)


@app.route("/")
def index():
    return "Hello, world"
python flask flask-socketio
2个回答
0
投票

在Flask-SocketIO的当前版本中,启动服务器的flask run方法只能在使用Flask开发服务器时使用,不推荐使用它,因为它不支持WebSocket。

我建议你做的是你改变你的应用程序如下:

import os

from flask import Flask
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY")
socketio = SocketIO(app)

@app.route("/")
def index():
    return "Hello, world"

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

然后运行应用程序:

python application.py

2
投票

我正在玩flask_socketio只是为了了解它是如何工作的。所以我的解决方法可能不太理想。

我跟着终端跑了

$ export FLASK_ENV=production 
$ flask run

我得到了以下警告但我的测试应用程序工作

Serving Flask app "<applicationname>.py"
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
[2019-03-20 09:58:09,131] WARNING in __init__: Flask-SocketIO is Running under Werkzeug, WebSocket is not available.
© www.soinside.com 2019 - 2024. All rights reserved.