python - 在消息上从 flask-socketio 更改全局实例的状态
问题描述
我目前正在将flask-socketio 运行到一个线程中。在特定的 socketio 事件中,我想更改主线程中全局对象的状态,即执行一个可能会更改其实例变量值的函数
在我的实际程序中,'self.params' 是 chromedrivers 的列表。当发出信号时,会删除或添加驱动程序。这有什么区别吗?Chromedriver 是一个不可腌制的对象。
这是一个烧瓶 socketio 代码,它是一个简化的示例:
from gevent import get_hub
get_hub().NOT_ERROR += (KeyboardInterrupt,)
from flask import Flask
from flask_socketio import SocketIO, emit
import threading
app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecret'
socketio = SocketIO(app, cors_allowed_origins="*")
class SomeObj():
def __init__(self, param):
self.param = param
def query(self):
self.param += 1
return
global_obj = SomeObj(0)
@socketio.on('msg')
def handle_msg():
global_obj.query()
def start():
def run():
socketio.run(app, port=5005)
SocketIOThread = threading.Thread(target=run)
SocketIOThread.daemon = True
SocketIOThread.start()
if __name__ == '__main__':
start()
while True:
a = input()
if a == '`':
break
else:
print(global_obj.param)
我怎样才能做到这一点?我每次只得到0。
解决方案
推荐阅读
- python - ImportError:无法从“PIL”导入名称“ExifTags”
- arrays - 访问 PSCustomObject Powershell 中的对象数组
- javascript - 从 ReactJS 中的 JSON 文件动态导入图像
- javascript - 在 chrome [devtools] 中管理 JavaScript setIntervals
- firebase - 我应该将数据加密到 Firestore 中吗?
- bash - 在此 jq 命令末尾计算值总和的最简单方法是什么?
- java - WebSphere 中的 JAX-WS 空响应,但 Tomcat 中没有
- database - 基于 Firebase 中的多个过滤器的查询
- javascript - 无法获取使用 SheetJS js-xlsx 库生成的可读 xlsx 文件
- sql - 从存储过程运行动态 SQL 查询以填充 GridView