简体   繁体   English

Flask SocketIO引发ValueError

[英]Flask SocketIO raises a ValueError

I am trying to set up a Flask server which can use SocketIO , however it doesn't work and it returns me this following error: 我正在尝试设置可以使用SocketIO的Flask服务器,但是它不起作用,并且它向我返回以下错误:

ValueError: signal only works in main thread

This is my setup for the flask environment: 这是我对烧瓶环境的设置:

export FLASK_APP=application.py
export FLASK_DEBUG=1

Then I run like I would normally do, and would work before I started using SocketIO : 然后,我像通常那样运行,并且在开始使用SocketIO之前可以工作:

flask run

Here is my code for application.py , which is very simple but maybe it helps: 这是我的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"

I am playing with flask_socketio just to understand how it works. 我正在使用flask_socketio只是为了了解它是如何工作的。 So my workaround might not be ideal. 因此,我的解决方法可能并不理想。

I ran following the terminal 我跑了码头

$ export FLASK_ENV=production 
$ flask run

I got following warning but my test application worked 我收到以下警告,但我的测试应用程序正常工作

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.

In current releases of Flask-SocketIO the flask run method to start the server can only be used when working with the Flask development server, which is not recommended because it does not support WebSocket. 在当前版本的Flask-SocketIO flask run仅在与Flask开发服务器一起使用时才能使用flask run方法来启动服务器,不建议使用该方法,因为它不支持WebSocket。

What I recommend that you do is that you change your application as follows: 我建议您做的是按照以下步骤更改应用程序:

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)

And then run the application with: 然后使用以下命令运行该应用程序:

python application.py

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM