バックグラウンド
Flask-RESTful 拡張機能を使用して単純な REST API を作成しようとしています。この API は、主に単純なサービスの CRUD とユーザーの認証を管理するために機能します。
また、Flask-SocketIO 拡張機能を使用していくつかの Web ソケットを作成しようとしています。これらのユーザーは、これらのユーザーが接続して、サービスを使用している他のユーザーに関連するデータのリアルタイム更新を確認できます。そのため、これらのユーザーが認証され、特定のソケットへの接続が許可されていることを知る必要があります。
問題
とはいえ、設定に少々手こずっています。これら 2 つのコンポーネント (REST API と SocketIO サーバー) を同じ Flask インスタンスで連携させることができないようです。これを言う理由は、次を実行すると、REST API または SocketIO サーバーのいずれかが機能しますが、両方は機能しないためです。
from flask import Flask
from flask_restful import Api
from flask.ext.socketio import SocketIO
app = Flask(__name__)
api = Api(app)
socketio = SocketIO(app)
# some test resources for the API and
# a test emitter statement for the SocketIO server
# are added here
if __name__ == '__main__':
app.run(port=5000)
socketio.run(app, port=5005)
質問
このタイプのセットアップの典型的な解決策は、Flask の 2 つの異なるインスタンスを同時に実行することですか? たとえば、SocketIO サーバーは、特定のユーザーが特定のソケットに接続するために認証/承認されていることを確認するために、REST API にリクエストを送信する必要がありますか?