在导入的类

时间:2015-06-26 15:37:33

标签: python-3.x flask

全部,我使用flask / uWSGI实现websockets。这被归结为在主应用程序中实例化的模块。服务器和模块的编辑代码:

main.py

from WSModule import WSModule
app = Flask(__name__)
wsmodule = WSModule()
websock = WebSocket(app)

@websock.route('/websocket')
def echo(ws):
    wsmodule.register(ws)
    print("websock clients", wsmodule.clients)    
    while True: # This while loop is related to the uWSGI websocket implementation
        msg = ws.receive()
        if msg is not None:
            ws.send(msg)
        else: return

@app.before_request
def before_request():
    print ("app clients:",wsmodule.clients)

WSModule.py

class WSModule(object):

    def __init__(self):
        self.clients = list()

    def register(self, client):
        self.clients.append(client) 

问题:当用户使用websockets连接(进入' / websocket'路由)时,wsmodule.register会附加其连接套接字,这样可以正常打印&#39 ; websocket客户'显示附加的连接。 问题是我无法从主应用程序访问这些套接字。这可以通过“应用客户端”看到。从不更新的打印输出(列表保持空白)。有些东西显然正在更新,但如何访问这些变化?

1 个答案:

答案 0 :(得分:1)

听起来您的程序正在使用threadsprocesses运行,并且正在运行的每个wsmodule / thread都存在process

因此,正在使用客户端信息更新一个wsmodule,而正在向客户端询问另一个{...},但被询问的人仍为空。

如果您使用的是threads,请查看thread local storage