2020 / 08 / 02
10:00 ~ 10:30
TR214
Effective Go
net & http & timeout
by
Hsueh-Tsung Kuo
Go 的 standard library 內已經內建了 net package,並以此為基礎提供方便的 net/http package。
實務上為了避免連線資源長時間被佔用,甚至是被挾持,我們會針對 http request 的各個進行階段設定相對應的 timeout,確保沒有資源 leak 的風險。
但 Go 官方的 http timeout 參數都只能控制各階段的完成時間,沒有一項 timeout 設定適合 streaming request 與 streaming response 的應用場合。
故在此提出新的開源小 package,逐一解釋其實作考量,並點出當前實作上不甚完美,卻沒有簡單解法之處。
希望能普渡眾碼農,同時抛磚引玉,讓有想法的人能夠建議與改良這個 package。
- 說明 http 的 timeout 模型
- 提出 streaming 的困難
- 介紹個人實作的開源 package
- 解釋 Go 語言內建的 timer 長年無法解決的問題
- package 未來可能的改進方向
About Hsueh-Tsung Kuo
- backend developer from Rayark Inc.
- main and almost the only one backend developer of rhythm game VOEZ
- supplemental developer of puzzle RPG Sdorica -sunset-
- test server performance and advise tuning direction for Soul of Eden
- common service developer