Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ตกใจว่า package net/http ของภาษา Go มันไม่ดีตรงไหน ?

$
0
0

ครั้งแรกที่อ่านชื่อของบทความ Don’t use Go’s default HTTP client (in production) ก็ตกใจนิดหน่อยและปลกใจว่า package net/http ของภาษา go นั้นมันมีปัญหาอะไร เพราะว่าในงานที่ขึ้น production ก็ใช้อยู่นะ และไม่ได้เกิดปัญหาอะไรด้วย
แต่พอได้อ่านบทความแล้วพบว่ามันไม่ใช่นะ 

เราต้องมาทำการ custom ค่าหรือการทำงานบางอย่างให้ถูกต้องและเหมาะสม
มิเช่นนั้น อาจจะเกิดปัญหาตามมาได้

ในบทความยกตัวอย่างการกำหนดค่าของ Timeout ของ HTTP Client
ที่ค่า default ไม่ได้กำหนดมาให้
มีทั้ง timeout ฝั่ง server และ client กันอีกด้วย เยอะไปไหน ?

ซึ่งเราสามารถกำหนดค่านี้ในฝั่ง Client ได้เลย 
ถ้ามี request หรือการทำงานที่รอข้อมูลไม่ตอบกลับไปเรื่อย ๆ
ทั้ง CPU/Memory/IO ก็จะถูกใช้จนหมด แบบนี้ไม่ดีแน่ ๆ 
ดังนั้นเราควรทำการกำหนด timeout ด้วยเสมอ
ซึ่งน่าจะเป็นสิ่งที่นักพัฒนาในทุก ๆ ภาษาทำกันอยู่แล้วนะครับ
แต่ถ้าใครใช้ framework แล้วเรื่องนี้ก็จะหายไป
เพราะว่ามักจะมีค่า default ให้เสมอ

ตังแต่ Go 1.7 ขึ้นมา จะทำการกำหนดค่า request timeout ด้วย Context กันแล้ว

[gist id="bf4a3591597f499c3479cd3384253184" file="timeout.go"]

ลองไปดู VDO เพิ่มเติมได้


Viewing all articles
Browse latest Browse all 1997

Trending Articles