如何对没有http请求的python脚本使用flask socketio

如何对没有http请求的python脚本使用flask socketio,python,flask,socket.io,flask-socketio,Python,Flask,Socket.io,Flask Socketio,我一直在跟踪和链接,以便在客户端和服务器之间进行通信。我的基本想法是弹出我当前从app.py(我的烧瓶应用程序)发出的通知。但是,我还有单独的python脚本,它们没有http请求。我还想从这些脚本向客户端(浏览器)发送通知。所以我想从我的其他python脚本向app.py发送消息,并从app.py发出消息。是否有更好的替代方案来实现这一点 我正在考虑从其他python脚本向app.py发送消息,并从app.py发出消息 这实际上就是Flask SocketIO如何做到的 您必须运行一个消息队列

我一直在跟踪和链接,以便在客户端和服务器之间进行通信。我的基本想法是弹出我当前从app.py(我的烧瓶应用程序)发出的通知。但是,我还有单独的python脚本,它们没有http请求。我还想从这些脚本向客户端(浏览器)发送通知。所以我想从我的其他python脚本向app.py发送消息,并从app.py发出消息。是否有更好的替代方案来实现这一点

我正在考虑从其他python脚本向app.py发送消息,并从app.py发出消息

这实际上就是Flask SocketIO如何做到的

您必须运行一个消息队列,通常是Redis或RabbitMQ,您的服务器和外部脚本可以访问该队列。然后在服务器中创建
SocketIO
对象,如下所示:

socketio = SocketIO(app, message_queue='redis://')
socketio = SocketIO(message_queue='redis://')
在脚本中,您可以按如下方式创建它:

socketio = SocketIO(app, message_queue='redis://')
socketio = SocketIO(message_queue='redis://')
显然,您可以更改消息队列URL以匹配您正在使用的内容

第一个对象是一个完全启用的服务器,它连接到
app
Flask实例。第二个是“只写”对象,它只能发出,因为没有给它一个要连接的服务器)


当您从外部脚本发出消息时,脚本将向消息队列发送一条消息,该消息将由服务器接收并执行。

如何访问消息队列中的数据?您不必这样做,Flask SocketIO负责从队列中写入和读取数据,但它会将单个数据写入两次,有时甚至四次。因此,我想检查Flask SocketIO是否两次(四次)写入/读取数据,或者消息队列实际上有两次数据。这就是为什么我想访问消息队列中的数据。有什么方法可以检查吗?这是一个名为
flask socketio
的常规酒吧子频道。您可以订阅以查看队列中的内容,或者使用Redis.Ok的任何监视工具。谢谢你的主意。我可以在订阅pub子频道后查看数据。但在浏览器上显示数据后,一旦我们重新加载浏览器,数据就消失了。这是我最关心的问题。是否有一种方法可以将数据临时存储在某个位置,以便即使在重新加载网页后也可以将其显示回来?