2017-12-18 10 views
0

私はフラスコアプリケーションを持っており、ほとんどのリクエストを同時に実行したいと思います。私はApp.run(スレッド= True)を設定し、これはほとんどの部分で動作するようです。しかし、エンドポイントのリクエストが同時に実行されないように、エンドポイント/ルートを制限したいこのエンドポイント/ルートがあります。これを行う方法はありますか?Flaskは特定のルートの同時リクエストを制限します

+0

なぜこれをやりたいですか?それは一般的に可能ではありません。 – davidism

+0

1つのエンドポイントは[dredd](https://github.com/apiaryio/dredd)を実行します。同時に複数のコマンドを実行すると、ソケットエラーが発生するようです。 – Murdius

答えて

0

ルートごとに宣言的に行うことはできないと思います。

ただし、threading.lock、またはより良い意味ではmultiprocessing.lockを使用して、シリアルで処理する必要があるものの実際の処理をシリアル化できます。要求ハンドラは、ロックを取得できるまで待機します。通常の実行中だけでなく、さまざまなエラーシナリオでロックを解放することに多くの注意を払うようにしてください。

+0

WSGIアプリケーションはスレッドで実行されるだけではありません。サーバーによっては、スレッド、プロセス、イベントレット、またはいくつかの組み合わせがあります。 – davidism

+0

@ダビデミズム:理にかなっている!更新しました。イベントレットはいずれかのロックでうまくいくと思います。 – 9000

関連する問題