如何将 flask-socketio 用于 python 没有 http 请求的脚本
How to use flask-socketio for python scripts which do not have http request
我一直在关注 this and this link 在客户端和服务器之间进行通信。我的基本想法是弹出我目前从 app.py(我的烧瓶应用程序)发出的通知。但是,我也有单独的 python 脚本,它们没有 http 请求。我也想从这些脚本向客户端(浏览器)发送通知。所以我正在考虑从我的其他 python 脚本向 app.py 发送消息并从 app.py 发出消息。有没有更好的替代方法来实现这一目标?
I was thinking of sending messages to app.py from my other python scripts and doing emit from app.py
实际上 Flask-SocketIO 就是这样做的。
您必须 运行 一个消息队列,通常是 Redis 或 RabbitMQ,您的服务器和外部脚本可以访问它。然后在您的服务器中,您创建 SocketIO
对象如下:
socketio = SocketIO(app, message_queue='redis://')
并在您的脚本中按如下方式创建它:
socketio = SocketIO(message_queue='redis://')
显然您可以更改消息队列 URL 以匹配您正在使用的内容。
第一个对象是一个完全启用的服务器,它附加到您的 app
Flask 实例。第二个是一个只能发出的 "write-only" 对象,因为没有给它附加一个服务器。
当您从外部脚本发出时,脚本会post向消息队列发送一条消息,该消息将被服务器拾取然后执行。
我一直在关注 this and this link 在客户端和服务器之间进行通信。我的基本想法是弹出我目前从 app.py(我的烧瓶应用程序)发出的通知。但是,我也有单独的 python 脚本,它们没有 http 请求。我也想从这些脚本向客户端(浏览器)发送通知。所以我正在考虑从我的其他 python 脚本向 app.py 发送消息并从 app.py 发出消息。有没有更好的替代方法来实现这一目标?
I was thinking of sending messages to app.py from my other python scripts and doing emit from app.py
实际上 Flask-SocketIO 就是这样做的。
您必须 运行 一个消息队列,通常是 Redis 或 RabbitMQ,您的服务器和外部脚本可以访问它。然后在您的服务器中,您创建 SocketIO
对象如下:
socketio = SocketIO(app, message_queue='redis://')
并在您的脚本中按如下方式创建它:
socketio = SocketIO(message_queue='redis://')
显然您可以更改消息队列 URL 以匹配您正在使用的内容。
第一个对象是一个完全启用的服务器,它附加到您的 app
Flask 实例。第二个是一个只能发出的 "write-only" 对象,因为没有给它附加一个服务器。
当您从外部脚本发出时,脚本会post向消息队列发送一条消息,该消息将被服务器拾取然后执行。