2017-03-18 26 views
3

私は2台のフラスコサーバーを持つバックエンドを持っています。 1つはすべてのRESTfullリクエストを処理し、もう1つはflask-socketioサーバーです。これらの2つのアプリケーション間でセッション変数(ログインユーザーなど)を共有する方法はありますか?それが重要なのであれば、別のポートで動作します。2台のフラスコサーバー間でセッションを共有する

どのように私はセッションがクライアントセッションのクッキーで動作するのか理解しているので、これらのサーバの両方で情報にアクセスできませんか?はいの場合はどうですか?もしそうでなければ、同じ効果を達成する方法はありますか?

+0

シンプルなRedisキャッシュを使用して、各サーバーがクッキーの保存場所と取得場所にアクセスするためのスクリプトを作成できますか?要求が行われたときにキャッシュをチェックするために、2つのサーバのうちの1つ(ほとんどの場合は制御されていないサーバ)を設定する必要があります。 – sconfluentus

+0

アプローチのように思えますが、両方のサーバを同じセッションストレージパスにポイントしてください...私はメイン(RESTfull)サーバへのアクセスが制限されているので、侵入しないものが最適でしょう。 – Jason

+0

私はどうしてこのように自分自身を行うのか分かりません。私は、(非常に単純なサーバー側のレベルで)ライブデータ分析プロジェクトを展開する方法としてPythonとフラスコを使用しており、サーバーの仕組みの理解が限られています。私はあなたのために働く答えを見つけることを願っています。 Redisは、それは、非常に使いやすく、インストールが簡単です...あなたはおそらく管理者の権利なしでそれを行うことができます(職場の私のテスト環境は、私たちのIT担当者が不平を言う場所です)私は3分でインストールしましたAWSの管理者はいません。 – sconfluentus

答えて

3

2台のサーバーを設定する方法に応じて、いくつかの方法があります。

最も簡単な解決策は、両方のサーバーを同じドメインとポート上のクライアントに表示させることです。たとえば、Socket.IOサーバーのルートとしてwww.example.com/socket.ioを、その他のURLにはwww.example.comをHTTPサーバーに送ることができます。これを実現するには、nginxなどのリバースプロキシサーバーを使用する必要があります。クライアントはサーバーに直接接続するのではなく、単一のポートでnginxに接続し、nginxはURLに応じて適切なサーバーに要求を転送するように構成されています。

上記の設定では、両方のサーバーが同じドメインのクライアントに公開されるため、両方にセッションCookieが送信されます。

サーバをクライアントとは別のものにしたい場合、セッションデータを共有するための良いオプションは、サーバ側のセッションに切り替えたり、Redis、memcacheなどに保存したりすることです。Flask-Session toそれを設定してください。

希望すると便利です。

関連する問題