我已经构建了一个 Flask+nginx+gunicorn 应用程序,它通过一对 zmq 套接字与服务对话,该套接字又将请求发送给分布式工作人员并取回结果。
但是,我没有进行大量检查以查看是否将正确的信息发送回用户。这意味着有时如果用户 A 和用户 B 几乎同时请求他们的数据,结果可能最终会出现在错误的用户身上。
我猜我需要在请求中发送一些上下文(比如用户名)。当结果返回时,将其放入队列中,并以某种方式确保浏览器请求根据上下文选择正确的结果。
您将如何确保将数据发送给其合法所有者?
代码如下所示:
@app.route('/restart', methods = ['POST'])
def restart():
uuid = request.form['uuid']
msg = json.dumps({'command': 'restart', 'uuid': uuid})
send_to_master(msg)
resp = Response(response=data, status=200, mimetype="application/json")
return resp
def send_to_master(msg):
context = zmq.Context()
s = context.socket(zmq.PAIR)
s.connect("tcp://localhost:9001")
s.send(msg)
# result received from the service
data = s.recv()
s.close()
return data