haskellのWAIについて質問です。
以下のような簡単なWAIのアプリケーションを作成しました。
app :: Application app request respond = do putStrLn $ ">>>>>>>>>>> 1" threadDelay 300000000 putStrLn $ ">>>>>>>>>>> 2" respond $ responseLBS status200 [(hContentType, "text/plain")] "Hello" main :: IO () main = do putStrLn $ "http://localhost:8080/" run 8080 app
このアプケーションに、ブラウザで
http://localhost:8080/a?x
にアクセスすると、サーバを立ち上げたコンソールに
1
と出力され threadDelay のところで止まります。
つまり、「>>>>>>>>>>> 2」は出力されません。
次に前のリクエストが終了していないうちに、別のブラウザのウインドウで、同じパスの
http://localhost:8080/a?x
にアクセスすると、今度はコンソールに何も出力されません。
前回のリクエストが終了してないからのようです。
今度は、パス(パラメータ)を変えて
http://localhost:8080/a?y
にアクセスすると
1
と表示されます。
これは、同じパス(とパラメータ)のリクエストに対してはスレッドは1つしか作成されない(別々のパスは平行処理される)ということでしょうか?
また、同じパスのリクエストを並行処理することはできるでしょうか?
ご回答よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。