Python 我应该如何使用socketio运行flask服务器?

Python 我应该如何使用socketio运行flask服务器?,python,flask,socket.io,Python,Flask,Socket.io,根据本教程,我在flask中构建了简单的Web服务器: 然后我意识到我需要WebSocket,因为我需要客户端和服务器之间的实时通信。所以我安装在我的venv flask socketio库中。然后我修改了我的uuu init_uuuuu.py文件,使其看起来像: from flask import Flask from flask_socketio import SocketIO from config import Config from flask_sqlalchemy import SQ

根据本教程,我在flask中构建了简单的Web服务器: 然后我意识到我需要WebSocket,因为我需要客户端和服务器之间的实时通信。所以我安装在我的venv flask socketio库中。然后我修改了我的uuu init_uuuuu.py文件,使其看起来像:

from flask import Flask
from flask_socketio import SocketIO
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import logging
from logging.handlers import RotatingFileHandler
import os


app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
socketio = SocketIO(app)

if not app.debug:
    if not os.path.exists('logs'):
        os.mkdir('logs')
    file_handler = RotatingFileHandler('logs/webserver.log', maxBytes=10240,
                                       backupCount=10)
    file_handler.setFormatter(logging.Formatter(
        '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'))
    file_handler.setLevel(logging.INFO)
    app.logger.addHandler(file_handler)

    app.logger.setLevel(logging.INFO)
    app.logger.info('Reaction test startup')

from app import routes, models, errors

if __name__ == '__main__':
    socketio.run(app)
问题是,现在当我尝试使用flask run运行服务器时,会收到警告:

初始警告:烧瓶插座在Werkzeug下运行,WebSocket不可用

我看到其他人也有这个问题(),我应该运行我的uuu init_uuuuuuuy.py脚本,而不是运行flask。然而,当我尝试用“python app/_init__u;.py”启动服务器时,我的导入失败了,感觉所有依赖项都丢失了。起初我收到一条信息:

回溯(最近一次呼叫最后一次): 文件“app/init.py”,第3行,在 从配置导入配置

所以我决定基本上把整个配置文件重写成uuu init_uuuu.py脚本。但这并没有起到任何作用,因为这样做后,我收到了一条消息:

文件“app/init.py”,第37行,在 从应用程序导入路由、模型、错误 ModuleNotFoundError:没有名为“app”的模块


所以我想重写Config.py文件的内容并不是解决问题的方法。我的问题是,我应该如何运行我的应用程序,以便它能够正确地支持WebSocket,而不必从头重写它?

我已经解决了我的问题。问题是我试图编辑我的_init__u; py.py文件,而不是绑定到FLASK_APP环境变量的文件。当我补充说:

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

到我的FLASK_应用程序脚本,然后从控制台用python server.py运行另一个脚本(这是绑定到FLASK_应用程序变量的脚本的名称),一切正常。

您使用的是Gevent还是eventlet?对于developmet,文档提到您需要使用
flask run
启动应用程序,而不是
python app.py
我使用eventlet,但实际上我已经解决了我的问题,我应该在分配给flask\u app(server.py)的python脚本中添加
socketio.run(app)
行环境变量,而不是“init.py”文件。然后我应该运行
pythonserver.py
,一切正常。