質問: randrange(1, 10) sleep(n) return 'Hello world! I slept {0}[s].'.format(str(n)) app.run() ``` これは、リクエストが飛んできたら乱数を元に1 - 10秒待ち何秒待ったか返すコードです。 ブラウザのタブを2つ用意し、両方素早くlocalhost:5000へアクセスすると、先にアクセスした方にレスポンスが返ってきてから後の方の待つフェーズが始まることが待ち時間からわかります。 もしFlaskが並列でレスポンスを返すことができたら、待ち時間の乱数が小さかったほうが先に返ってくるはずです。
回答: flask.Flask.runのオプションにprocessesまたはthreadedを指定する事で可能だと思います。 windows環境ではforkがないためproessesはエラーとなりました。 ``` app.run(processes=3) ``` または ``` app.run(threaded=true) ``` 別のブラウザから同時アクセスして同時に処理されることを確認しました。 runのオプションはwerkzeugに渡されるそうなのでoptionsに関してはWerkzeugのドキュメントを参照する必要があります。 > > * options – the options to be forwarded to the underlying Werkzeug server. See werkzeug.run_simple() for more information. > > > Flask.run (bitbucket.org) werkzeug parameters (pocoo.org)