
目次
Django · IIS · POST タイムアウトのトラブル事例
大容量ファイルアップロードや重い処理を伴う POST リクエストを Django + IIS 環境で送ると、ブラウザ側にタイムアウトエラーが返ってくる事例があります。本記事では、実際に発生した事象の調査内容と、IIS 側の activityTimeout / requestTimeout / maxAllowedContentLength の調整、wfastcgi 側の設定、Django 側の対処を組み合わせて解決した実例を共有します。
今回は、Django+IIS環境で発生したタイムアウト問題に関する情報を簡単にまとめました。
同じような境遇に遭遇した方のお役に立てれば幸いです。
user@sinyblog:~/article ❯ 01_section_1.md前提環境
今回検証した環境は、Django(2.2)+Windows環境+IIS(WEBサーバ)という組み合わせです。
Windows10、2012、2016サーバあたりであればどのバージョンでも有効だと思われますので細かいバージョンは明記しません。
user@sinyblog:~/article ❯ 02_section_2.md今回発生した問題と原因
DjangoのWEBアプリケーション上から、比較的時間のかかる処理(数分程度)をWEBブラウザ上から実行した際に、以下のようなIISのタイムアウトエラーが発生してしまいました。

処理フローの概要は以下の通りです。

- WEBからPOSTリクエスト実行
- IIS経由でDjangoのカスタムコマンドをCALL
- カスタムコマンドの処理で時間がかかるとIISでタイムアウトが発生
タイムアウト発生までの時間を計測するとぶれはありましたが、60秒~80秒くらいでした。
この時間を頼りにIIS側のタイムアウト設定を調べたところ、「アクティビティタイムアウト」が原因であることがわかりました。
user@sinyblog:~/article ❯ 03_section_3.md解決策
上記の通り、アクティビティタイムアウトの時間をデフォルトの70秒から増やすことでエラーを回避することができました。
以下がその手順です。
IISマネージャでFastCGIの設定をクリック

FastCGIの設定パス(python.exe)をクリック⇒画面右の「編集」をクリック。

アクティビティタイムアウトの設定値を70から増やす。

以上でFastCGIプロセス⇔IIS間の通信が発生しない状態に対するタイムアウト発生までの時間を長くすることができます。
以上、Django+IIS環境で発生したタイムアウト問題に関する情報まとめでした。

