Flask SocketIO вызывает ошибку ValueError - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь настроить сервер Flask, который может использовать SocketIO, однако он не работает, и мне возвращается следующая ошибка:

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"

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Я играю с 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.
0 голосов
/ 18 февраля 2019

В текущих выпусках 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
...