FlaskのIOError - Broken pipeにどう対処すれば良いか?
結論から言いますと
app.run()
の引数にthreaded=True
を加えること.
以下は蛇足.
概要
最近,以下のような構成で趣味のアプリを書いていたのだけど.頻繁にIOError: [Errno 32] Broken pipe
が出て困っていた.
具体的には,どちらかの更新がキッカケになって止まる感じ.
参考にしたページ
エラー名で調べると,以下のページが見つかった.
Flaskの提供しているWSGI互換のサーバは,標準でシングルスレッドで動くらしく,複数の処理が投げられるとIOErrorを起こすらしい.
なので,threaded
オプションをTrue
に設定して,複数スレッドでの動作を許可してやればいいとのこと.
ただ,全て問題解決かと言うとそういうわけではなくて,「Flaskに入っているサーバ機能を使うのは開発のときだけにしろ」とのことだった. プロダクション環境に入れるときは,gunicornのような別のWSGI互換サーバを使うべきらしい.
なるほどですね.