如何将 Flask 的 app.py 中的 socketio 对象传递给 Python 中的视图模块?

Posted

技术标签:

【中文标题】如何将 Flask 的 app.py 中的 socketio 对象传递给 Python 中的视图模块?【英文标题】:How can I pass the socketio object from Flask's app.py to a views module in Python? 【发布时间】:2021-12-23 08:20:26 【问题描述】:

在我的app.py 中,我这样做了:

app = Flask(__name__)
app.register_blueprint(views.SOMETHING)
socketio = SocketIO(app, ...)

我需要使用这个socketio 对象,或者更具体地说,它的socketio.emit 方法来与客户交谈。

我需要从多个 Python 模块中执行此操作,例如我的 views 模块,以及一些定义一些后台线程的模块。

当我启动后台线程时,很容易将socketio 对象传递给它们,但我不知道如何在我的所有视图都定义的views 模块中使该对象可访问.

我唯一能想到的就是有一个global_vars 模块来存储socketio 对象,它可以从多个Python 模块导入,但我听说这是不好的做法。

有没有更好的方法将我的socketio 对象传递给我的views 模块?

【问题讨论】:

【参考方案1】:

最简单的方法是使用from app import socketio,但请确保在设置 socketio 后将导入 socketio 的文件导入 app.py。

【讨论】:

以上是关于如何将 Flask 的 app.py 中的 socketio 对象传递给 Python 中的视图模块?的主要内容,如果未能解决你的问题,请参考以下文章

Flask 应用程序替代文件结构(app.py,模板文件夹)

带有 Flask 的石墨烯不加载模式

Python Flask 使用按钮调用函数

如何使用请求库将Payload从另一个Python App发送到Flask应用程序[重复]

flask 配置文件

flask中app.py: error: invalid choice: 'insert'........的问题