跳至主要内容

Postman Socket Hang Up

問題描述

使用 Postman 嘗試打到後端測試環境的 API 時,收到 socket hang up 的回應。

原因

後端的架構有使用到 Docker + gunicorn 去運作 Python 的 Django 框架,沒有給定預設 timeout 值時,gunicorn 會預設 30s 的 workout time。當回應 30s 內未收到,就會被 gunicorn 中斷,因而使 Postman 返回 socket hang up。

解決方式

在 gunicorn.conf.py 加上 timeout=0

workers = 3
...other settings
timeout = 0

其他

  1. 有點難解的點在於,除了自己對後端的理解不夠之外,從 Postman 的 Socket hang up 也很難直接看出什麼端倪。
  2. 後來思路是,其實我們的專案不用 Docker 也可以開,未使用 Docker 的同事沒有收到 Socket hang up,因此把目標放在跟 Docker 相關的工具,一個個檢視看有沒有可能出問題。

參考

https://stackoverflow.com/questions/44426538/postman-socket-hang-up https://blog.csdn.net/qq_39218530/article/details/120238816