簡體   English   中英

Flask SocketIO引發ValueError

[英]Flask SocketIO raises a ValueError

我正在嘗試設置可以使用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"

我正在使用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.

在當前版本的Flask-SocketIO flask run僅在與Flask開發服務器一起使用時才能使用flask run方法來啟動服務器,不建議使用該方法,因為它不支持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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM