私は 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