Requests: Python 3.5์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์š”์ฒญ ํฌํ•จ ๊ณ ๋ ค

์— ๋งŒ๋“  2015๋…„ 01์›” 25์ผ  ยท  42์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: psf/requests

๋งŽ์€ ๋‚ด์šฉ์ด ์žˆ์ง€๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...

Python ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „์ฒด๊ฐ€ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ถ”๊ฐ€๋˜๋Š” ์š”์ฒญ์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฃผ์ œ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์ƒ๊ฐ๊ณผ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

Propose Close

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ธ€์Ž„, ๋‚˜๋Š”์ด ํ† ๋ก ์„ ๋– ๋‚ ๊ฑฐ์•ผ. ์ œ ์˜๊ฒฌ์„ ๋ถ„๋ช…ํžˆ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์Šจ ์†Œ๋ฆฌ๋ฅผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  42 ๋Œ“๊ธ€

์˜ˆ, ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

  • ์ด๊ฒƒ์ด ์ง„ํ™”ํ•˜๊ณ  ์„ฑ์žฅํ•˜๋Š” Requests์˜ ๋Šฅ๋ ฅ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น ๊นŒ์š”?
  • Requests์˜ ๋ฆด๋ฆฌ์Šค ๋นˆ๋„๊ฐ€ Python์˜ ๋ฆด๋ฆฌ์Šค ๋นˆ๋„์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ ํฐ ์ฐจ์ด์ ์€ stdlib๊ฐ€ ์š”์ฒญ์— ์ ํ•ฉํ•œ ํ™ˆ์ด ์•„๋‹ˆ๋ผ๋Š” ์ข‹์€ ํ‘œ์‹œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์˜๊ฒฌ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์„ ์ฐธ์กฐํ•ฉ์‹œ๋‹ค.

@shazow @kevinburke @dstufft @ ์•Œ๋ ‰์Šค @ sigmavirus24

"ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ฃฝ๋Š” ๊ณณ"์€ ์–ด๋–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

๋ฆด๋ฆฌ์Šค ์ผ€์ด๋˜์Šค ์งˆ๋ฌธ์€ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž์œ ๋กญ๊ฒŒ ์ง„ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํ€˜์ŠคํŠธ์˜ ๋Šฅ๋ ฅ์„ ์žƒ์–ด๋ฒ„๋ฆด๊นŒ ๊ฑฑ์ •๋œ๋‹ค. ์ฆ‰, ์•„๋งˆ๋„ requests ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ ํ•ฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด 2๋‹ฌ๋Ÿฌ์˜ ๊ฐ€์น˜:

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ํ•˜๊ธฐ๋ฅผ ๊บผ๋ ค ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์™ธ๋ถ€์— ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ฒ„์ „ ์ง€์› ๋ฐ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž ์ •์ฑ…์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์œ ๋ฅผ ์ฃผ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ํ•ต์‹ฌ ๊ฐœ๋ฐœ์˜ ์šฐ์„  ์ˆœ์œ„์— ์ •์ค‘ํ•˜๊ฒŒ ๋™์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ 3๋…„ ์ด์ƒ ๋™์•ˆ ์ด ํ”„๋กœ์ ํŠธ์˜ ์ƒ๋ช…์„ ์ด์—ˆ๋˜ ์ด๋ฐ์˜ฌ๋กœ๊ธฐ์ ์ธ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

์ด ๋ชจ๋“ˆ์ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋“ค์–ด๊ฐ€๋ฉด ํ˜„์žฌ ํ•ต์‹ฌ ํŒ€์ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™•์‹คํžˆ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ธ ์ˆ˜๋ ์— ๊ทธ๊ฒƒ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๋ฐ ๊ฑฐ์˜ ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. stdlib์—์„œ ์š”์ฒญ์„ ๊ด€๋ฆฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๊ฐ€์žฅ ๋†’์€ ์‚ฌ๋žŒ์€ @sigmavirus24 ์ด๋ฉฐ ๊ทธ๋Š” ํ•œ ์‚ฌ๋žŒ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฐฉํ–ฅ ์ƒ์‹ค์€ ํ•„์—ฐ์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์นจ์‹์œผ๋กœ ์ด์–ด์งˆ ๊ฒƒ์ด๋ฉฐ, ๊ทธ๊ฒƒ์€ ๋น„๊ทน์ ์ธ ์ผ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์„ ๊ฑฐ๊ธฐ์— ๋„ฃ์–ด์•ผ ํ•˜๋Š” ์ข‹์€ ์ด์œ ์ด์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํŒŒ์ด์ฌ ์ƒํƒœ๊ณ„๋ฅผ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € chardet ๋ฐ urllib3์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  stdlib์— ์š”์ฒญ์„ ์‹ค์ œ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Python์ด CA ๋ฒˆ๋“ค์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋ฏ€๋กœ Python์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์ œ ์‹œ์Šคํ…œ ํ”Œ๋žซํผ ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์š”์ฒญ์„ ๋ฐ›๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ด์ง€๋งŒ pip์— ๋Œ€ํ•œ ๋‚ด ์ž‘์—…์˜ ์ผ๋ถ€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ stdlib์— ์ถ”๊ฐ€ํ•  ํ•„์š” ์—†์ด ์š”์ฒญ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ํŒŒ์ด์ฌ stdlib์—์„œ HTTP ์š”์ฒญ์„ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ๋‹ค์†Œ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. urllib์™€ urllib2์˜ ํ†ตํ•ฉ์€ Python stdlib์—์„œ ์ข‹์€ ์ผ์ด์—ˆ๊ณ  urllib.request ๋ฐ "requests"๋กœ ์ด๋ฅผ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 3.5+์—๋งŒ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๋ฏ€๋กœ ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ PyPI์— ์žˆ๋Š” ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ 3.5๋ฅผ ์ตœ์†Œ ์ง€์› Python ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์ผ์–ด๋‚  ํ˜„์‹ค์ ์ธ ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์š”์ฒญ์ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ „์ฒด Python ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋„์›€์ด ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ˆ™๋ จ๋œ ์‚ฌ์šฉ์ž๋Š” ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆด๋ฆฌ์Šค์—์„œ ๊ธฐ์—ฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜ค๋žซ๋™์•ˆ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ์—ฌํ•˜๊ธฐ๋ฅผ ๊บผ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์— ๋ฏธ์น  ๋ƒ‰๊ฐ ํšจ๊ณผ์— ํŠนํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋œ Python ๋ฐฐํฌํŒ์„ ๋งŒ๋“œ๋Š” ์ค‘๊ฐ„ ์ง€์ ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”.

์š”์ฒญ์€ ๋‚˜๋ณด๋‹ค ์•ž์„œ ์–ธ๊ธ‰ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ stdlib ํฌํ•จ์— ์ ˆ๋Œ€์ ์œผ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. urllib3 ์ข…์†์„ฑ๋งŒ์œผ๋กœ๋„ ์™„๋ฒฝํ•œ ์‡ผ์Šคํ† ํผ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด stdlib์—์„œ ์ฃฝ๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ ์šฉํ•œ _๋ฌด์—‡์€_ ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ˆ๋งˆ๋ฒ•์„ ์—ฐ์Šตํ•˜์ง€ ์•Š๊ณ ๋„ https์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ get/post ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” stdlib์˜ ํ˜„์žฌ http ๋ฆฌ์†Œ์Šค ์œ„์— ๊ตฌ์ถ•๋œ ์š”์ฒญ๊ณผ ์œ ์‚ฌํ•œ _basic_์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ Python 3์—๋งŒ ์ถ”๊ฐ€๋  ๊ฒƒ์ž„์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. :) (๊ทธ๋ฆฌ๊ณ  Python 3.6 ์ด์ „์€ ์•„๋‹˜).

Kenneth ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์ง€๊ฒน์Šต๋‹ˆ๊นŒ? ;)

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ httplib, urllib, ๊ทธ๋ฆฌ๊ณ  ์นœ๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋งํ•˜์ง€ ์•Š๊ณ ๋Š” ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๋…ผ์˜๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ์˜ ๋ณต์žก์„ฑ์„ ํ•ด๊ฒฐํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ "ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค"๋ผ๋Š” ๋Œ€๋‹ต๋ณด๋‹ค ๋” ๋‚˜์˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. urllib, urllib2์˜ ์‹œ๋Œ€๋กœ ํšŒ๊ท€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ชจ๋“ˆ์ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋“ค์–ด๊ฐ€๋ฉด ํ˜„์žฌ ํ•ต์‹ฌ ํŒ€์ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™•์‹คํžˆ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ธ ์ˆ˜๋ ์— ๊ทธ๊ฒƒ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๋ฐ ๊ฑฐ์˜ ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. stdlib์—์„œ ์š”์ฒญ์„ ๊ด€๋ฆฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๊ฐ€์žฅ ๋†’์€ ์‚ฌ๋žŒ์€ @sigmavirus24 ์ด๋ฉฐ ๊ทธ๋Š” ํ•œ ์‚ฌ๋žŒ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฐฉํ–ฅ ์ƒ์‹ค์€ ํ•„์—ฐ์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์นจ์‹์œผ๋กœ ์ด์–ด์งˆ ๊ฒƒ์ด๋ฉฐ, ๊ทธ๊ฒƒ์€ ๋น„๊ทน์ ์ธ ์ผ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•ด stdlib๋ฅผ ํ—ค๋งค๊ณ  ์‹ถ์ง€๋งŒ, ๋‚ด๊ฐ€ ์ œ์ถœํ•œ ์ด์ „ ํŒจ์น˜ ์„ธํŠธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€์ง€ ์•Œ์ง€ ๋ชปํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” _๊ฒ€ํ† ๋œ_ ์‚ฌ์‹ค์„ ๊ฐ์•ˆํ•  ๋•Œ ๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ท€์ฐฎ๊ฒŒ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ฐ์•ˆํ•  ๋•Œ ์กฐ์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋” ์ค‘์š”ํ•œ ๊ฒƒ๋“ค์— ์™„์ „ํžˆ ๋น ์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌด์ž‘์œ„๋กœ httplib/http๋ฅผ ์œ ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์ง€๋งŒ (์•„์ง) ์ž‘์—…์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ @Lukasa ์™€ ๋‚ด๊ฐ€ ์•‰์•„ ์žˆ๋Š” ํŒจ์น˜๊ฐ€ ์žˆ์„ ๋•Œ httplib์—์„œ ์ž‘์—…ํ•  ์ธ๋‚ด์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฃผ๋ณ€์— ์žˆ๊ณ , ๊ฒ€ํ† ๋˜์ง€ ์•Š๊ณ , ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ธด๊ธ‰ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ).

์•„๋งˆ๋„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ผ๋Š” ์š”์ฒญ์„ ๋ถ„๊ธฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์š”์ฒญ์€ ๋‚˜๋ณด๋‹ค ์•ž์„œ ์–ธ๊ธ‰ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ stdlib ํฌํ•จ์— ์ ˆ๋Œ€์ ์œผ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. urllib3 ์ข…์†์„ฑ๋งŒ์œผ๋กœ๋„ ์™„๋ฒฝํ•œ ์‡ผ์Šคํ† ํผ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด stdlib์—์„œ ์ฃฝ๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

urllib3์ด ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด๋ผ๋Š” ๊ฒƒ์€ ํ•ญ์ƒ @kennethreitz (๋”ฐ๋ผ์„œ ์ „์ฒด ํ”„๋กœ์ ํŠธ)์˜ ๋…ผ์Ÿ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์˜ ๊ฐ€์žฅ ํฐ ๊ธฐ๋Šฅ ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด urllib3์— ์˜ํ•ด ์™„์ „ํžˆ ์ฒ˜๋ฆฌ๋˜์ง€๋งŒ ์ด๊ฒƒ์ด ์ง„์ •์œผ๋กœ ์ข…์†์„ฑ์ด ์—†๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ๋‹ค์‹œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ƒค๋ฅด๋ฐ ์˜์กด์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ: ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ(๊ทธ๋ฆฌ๊ณ  ํŠนํžˆ ์ €์—๊ฒŒ)์—๊ฒŒ๋Š” ๊ทธ์ € ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋„ฃ์„ ๋•Œ๊นŒ์ง€ py2์™€ py3์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค(์ง€๋‚œ ๋ช‡ ๊ฐœ์›” ๋™์•ˆ์—๋งŒ chardet์œผ๋กœ ๋‹ค์‹œ ๋ณ‘ํ•ฉ๋จ). ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋Š๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ์ •ํ™•ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋ธ์ด ๋˜๋Š” Mozilla์˜ ๋ณดํŽธ์ ์ธ ์ฐจํŠธ๋Š” Mozilla์— ์˜ํ•ด ๊ฑฐ์˜ ํ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ chardet์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ์–ด์จŒ๋“  ์ˆœ ๊ธ์ •์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฑธ ํ•ด์•ผ ํ•˜๋‚˜ ๋ง์•„์•ผ ํ•˜๋‚˜ ์†”์งํžˆ ๊ฑฑ์ •์ด ๋ฉ๋‹ˆ๋‹ค. stdlib์— ์žˆ๋Š” ๊ฒƒ์€ ๋ชจ๋‘ API์—์„œ๋งŒ ์š”์ฒญ์ด ๋ฉ๋‹ˆ๋‹ค. Python 3 ์ฑ„ํƒ๋ฅ ์€ ์‚ฌ๋žŒ๋“ค์ด ์•ž์œผ๋กœ N๋…„ ๋™์•ˆ ์˜๋ฏธ ์žˆ๋Š” ์˜ํ–ฅ์„ ๋ฐ›์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋Š๋ฆฝ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋‚˜๋Š” ์•„๋งˆ๋„ ์š”์ฒญ์„ ๋ถ„๊ธฐํ•˜๊ฑฐ๋‚˜ ๊ทธ ์‹œ์ ์—์„œ urllib3๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์š”์ „์— Guido์™€ ์ด์— ๋Œ€ํ•ด ๊ธธ๊ฒŒ ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒค๋ฅด๋ฐ๊ฐ€ ๋จผ์ € ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. urllib3์™€ ์š”์ฒญ์ด ํ•จ๊ป˜ http ํŒจํ‚ค์ง€์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” @hynek ๋ฐ @dstufft์— ๋™์˜ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์š”์ฒญ์€ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค :)

์–ด๋Š ์ชฝ์ด๋“ , ๊ณต์œ ํ•˜๊ณ  ์‹ถ์€ ์˜๊ฒฌ์ด ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์—์„œ(๋˜๋Š” ์‹ค์ œ๋กœ๋Š” ์–ธ์ œ๋“ ์ง€) ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

:๋ฐ˜์ง์ด::์ผ€์ดํฌ::๋ฐ˜์ง:

๋˜ํ•œ asyncio-story๊ฐ€ ์—†๋Š” stdlib์— ์ƒˆ http ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‚˜์—๊ฒŒ ๋ฉ์ฒญ์ด.

2015๋…„ 1์›” 25์ผ ์ผ์š”์ผ ์˜คํ›„ 1:15:51 Kenneth Reitz [email protected]
์ผ๋‹ค:

์–ด๋Š ์ชฝ์ด๋“ , ๊ณต์œ ํ•˜๊ณ  ์‹ถ์€ ์˜๊ฒฌ์ด ์žˆ์œผ์‹œ๋ฉด
์—ฌ๊ธฐ์—์„œ(๋˜๋Š” ์–ธ์ œ๋“ ์ง€) ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[์ด๋ฏธ์ง€: :๋น›๋‚˜๋Š”:] [์ด๋ฏธ์ง€: :์ผ€์ดํฌ:] [์ด๋ฏธ์ง€: :๋น›๋‚˜๋Š”:]

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kennethreitz/requests/issues/2424#issuecomment -71384152
.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ httplib, urllib, ๊ทธ๋ฆฌ๊ณ  ์นœ๊ตฌ๋“ค์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋งํ•˜์ง€ ์•Š๊ณ ๋Š” ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๋…ผ์˜๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ์˜ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ƒํ™ฉ์„ ๋จผ์ € ์ •๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

:+1: :๊ธˆ์†:

๋ถ„๋ช…ํžˆ ํ•˜์ž๋ฉด, stdlib์— ํฌํ•จํ•˜๊ธฐ ์œ„ํ•ด urllib3์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ œ ์œ„์˜ ์˜๊ฒฌ์„ ๊ฐ€๋ณ๊ฒŒ ์—ฌ๊ฒจ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. urllib3๋Š” (์•„๋งˆ๋„ 10๋…„ ์ด์ƒ) ๊ฐœ๋ฐœ์ž ์ž‘์—…์˜ ์‚ฐ๋ฌผ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž‘์—…๋Ÿ‰์€ ์—„์ฒญ๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋„ ๋ช‡ ๋…„ ์ „์— Guido์™€ stdlib์— urllib3๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ์ง€๋งŒ ์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๋‹นํžˆ ์ค‘๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.

urllib3์˜ API๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ๋Œ€๋ถ€๋ถ„ ์•ˆ์ •์ ์ด์—ˆ๊ณ  ๊ฑฐ์˜ ์™„๋ฒฝํ•˜๊ฒŒ ํ•˜์œ„ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์†๋„๋Š” ์˜ค๋Š˜๋‚  stdlib์˜ ์†๋„๋ณด๋‹ค ํ›จ์”ฌ ๋Š๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์‚ฌ์†Œํ•œ ์ˆ˜์ • ๋˜๋Š” ๋ณด์•ˆ ๊ฐœ์„ ์ž…๋‹ˆ๋‹ค(์„ธ๋ฐ€ํ•œ ์‹œ๊ฐ„ ์ดˆ๊ณผ/์žฌ์‹œ๋„์™€ ๊ฐ™์€ ๋•Œ๋•Œ๋กœ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ํฌํ•จ). ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ •๋ง๋กœ urllib3๋ฅผ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์›ํ–ˆ๋‹ค๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋”์ฐํ•œ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ _best_ ์•„์ด๋””์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

(urllib3์™€ ๋‹ค๋ฅธ ๋ชฉํ‘œ๋กœ ๋งค์šฐ ๋‹ค๋ฅธ ์†๋„๋กœ ์›€์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.)

๋‚ด ์ƒ๊ฐ์— ๊ฐ€์žฅ ์ข‹์€ ์•„์ด๋””์–ด๋Š” PSF๊ฐ€ 1-3๋ช…์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ณ ์šฉํ•˜์—ฌ urllib3์—์„œ ๋งŽ์€ ์˜๊ฐ์„ ๋ฐ›์•„ HTTP/2๋ฅผ ์ง€์›ํ•˜๋Š” asyncio ์œ„์— ์ƒˆ๋กœ์šด http ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. , ํ•˜์ดํผ. ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ผ๊ด€๋˜๊ณ  ๋ชจ๋“ˆ์‹์ด๋ฉฐ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” Python 4 ๋˜๋Š” ๊ทธ ์ด์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ๋ชจ๋“  urllibs ๋ฐ httplibs๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด 6-9๊ฐœ์›”์˜ ํž˜๋“  ์ž‘์—…์ด ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๊ทธ ์ด์ƒ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@sigmavirus24 ์˜ ์ œ์•ˆ์— ๋”ฐ๋ผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ต์ฒด๋˜์—ˆ์œผ๋ฉด ํ•˜๋Š” urllib3์˜ ๊ฐ€์žฅ ๋‚˜์œ ๋ถ€๋ถ„์€ httplib์— ์˜์กดํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. urllib3์˜ ๊ธฐ๋Šฅ์€ httplib์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋งŽ์€ ์ฝ”๋“œ๋กœ ์ธํ•ด ์‹ค์งˆ์ ์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชฉํ‘œ์—์„œ HTTP/2 ์ง€์›์ด ์ง„์ง€ํ•˜๊ฒŒ ๊ณ ๋ ค๋œ๋‹ค๋ฉด HTTP/1.1์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฒ”์œ„๋Š” ํ•„์š”ํ•œ ์ž‘์—…์˜ ๋งค์šฐ ์œ„์•ˆ์ด ๋˜๋Š” ๋ถ€๋ถ„์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ํŒŒ์ด์ฝ˜(PyCons) ์ „์— ์šฐ๋ฆฌ ์ค‘ ํ•œ ๋ฌด๋ฆฌ๊ฐ€ ๋งŒ๋‚˜ ๋‹น์‹œ ์šฐ๋ฆฌ๊ฐ€ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ƒ์ ์ธ ๋ฐฐ์—ด๋กœ ๋ชจ๋“  ์กฐ๊ฐ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ์™„์ „ํžˆ ์ƒˆ๋กœ์šด http ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ ˆ์ด์•„์›ƒ์„ ํ™”์ดํŠธ๋ณด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๋ ค๊ณ ํ•œ๋‹ค๋ฉด ๋‚˜๋Š”์ด ๋ฉ”๋ชจ๋ฅผ ํŒŒํ—ค ์น˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

+1 @shazow

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ƒ๋‹นํ•œ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์‹œ๊ฐ„๊ณผ ์˜ํ–ฅ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ๋Š” API ๋””์ž์ธ์„ ์Šค์ผ€์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์š”์ฒญ์„ ์ข…์†์„ฑ์œผ๋กœ ํ—ˆ์šฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ stdlib์— ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ฆ‰, urllib3์—๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ •๋ง๋กœ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ stdlib์— ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@dstufft ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ์‚ฌ๋žŒ์ด urllib๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๊ท€์ฐฎ๊ฒŒ ํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ์ ํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค. (์‚ฌ๋žŒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ssl/etc ๋•Œ๋ฌธ์— dep๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ฒŒ์œผ๋ฆ„ ๋•Œ๋ฌธ์—)

@dstufft ๋˜ํ•œ ๋‹ค์ค‘ ๋ฒ„์ „ deps๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์•„๋งˆ๋„ ๋‹น์‹ ์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ด๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์š”๊ตฌํ•œ๋‹ค๋ฉด ๋ฒ„์ „์—์„œ API ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ƒ์ฒ˜๋ฅผ ์ž…์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๋…„ ๋™์•ˆ API๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•œ ์ข…์†์„ฑ ์—†์ด ์ข…์†์„ฑ์„ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ์‚ฌํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ํ† ๋ก ํ•  ์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@sigmavirus24 ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์—๋Š” ๊ณผ๊ฑฐ์— API๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. API๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์ข…์†์„ฑ์ด ๋ณต์žกํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์ด ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ ์ข…์†์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ํ•ด๋‹น ํ† ๋ก ์— ๋Œ€ํ•œ ์™„๋ฒฝํ•œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

stdlib๋กœ ์ด๋™ํ•˜๋ฉด API๊ฐ€ ์•ˆ์ •์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@dcramer API๋Š” 1.0์—์„œ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. API๋Š” ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์š”์ฒญ API๋„ ๋ณ€๊ฒฝ์„ ๊ณ„ํšํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ์œ ์ผํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์•„๋ฌด ๊ฒƒ๋„ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” json ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ API๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๊นจ๋œจ๋ ธ๋‹ค๊ณ  ๊ณ„์† ๋น„๋‚œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ OpenStack๊ณผ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์— ์˜ค๋žซ๋™์•ˆ >=1.2.3 ๋กœ ์ •์˜๋œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ ์š”์ฒญ์˜ ์•ˆ์ •์„ฑ์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ๋งํ•ด ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. API๋Š” ์•ˆ์ •์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ๋Š” 1.0์„ ์ž๋ฅธ ํ›„ API์— ๋Œ€ํ•œ ๋ชจ๋“  ์ƒˆ๋กœ์šด ์ถ”๊ฐ€๋ฅผ ๊ฑฐ๋ถ€ํ–ˆ๊ณ ( json ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”๊ฐ€๋ฅผ ์ œ์™ธํ•˜๊ณ ) API๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋งค์šฐ ์—„๊ฒฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์š”์ฒญ์˜ ์†Œ๋น„์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ๋‹น์‹ ์€ ์ด๊ฒƒ์„ ์•Œ์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์˜ ๋ฌด์ง€๋ฅผ ๊ฐœ์ธ์ ์œผ๋กœ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ stdlib API๊ฐ€ ๋งค์šฐ ์•ˆ์ •์ ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด argparse๊ฐ€ Python 3.3๊ณผ 3.4 ์‚ฌ์ด์—์„œ ๊ณต๊ฐœ API๋ฅผ ์ค‘๋‹จํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜์‹ญ์‹œ์˜ค.

@sigmavirus24 ๋‹น์‹ ์€ ์ด์ œ ์ด๊ฒƒ์„ ์ˆœ์ˆ˜ํ•˜๊ฒŒ API ๋…ผ์Ÿ์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํฌํ•จํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด API๋ฅผ ์ ˆ๋Œ€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ข‹์ง€๋งŒ ์ €๋Š” ๊ทธ๊ฒƒ์„ ๋”ฐ๋ฅด๊ฑฐ๋‚˜ ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๊ณ  ๊ฐ€์ •ํ•  ์˜ํ–ฅ์ด๋‚˜ ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค.

Python์ด API๋„ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์•„์ฃผ ์ž์ฃผ, ๋•Œ๋กœ๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ๋ฐฉ์‹์œผ๋กœ, ์•„๋งˆ๋„ Python 3์— ๋Œ€ํ•ด ๋“ค์–ด๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ธ€์Ž„, ๋‚˜๋Š”์ด ํ† ๋ก ์„ ๋– ๋‚ ๊ฑฐ์•ผ. ์ œ ์˜๊ฒฌ์„ ๋ถ„๋ช…ํžˆ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์Šจ ์†Œ๋ฆฌ๋ฅผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Œ€๋‹ตํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ํ•ต์‹ฌ ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํ‘œ์ค€ ๋ฌธ์„œ(ํŠœํ† ๋ฆฌ์–ผ ํฌํ•จ)๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋˜๊ธฐ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ํ˜„์žฌ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ HTTP API๋Š” ๊ฒฝ์Ÿ ํ”„๋กœํ† ์ฝœ(์˜ˆ: FTP ๋Œ€ HTTP)์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ๊ฐ„์ฃผ๋˜๋˜ ์‹œ๋Œ€๋ถ€ํ„ฐ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ 10๋…„ ๋ฐ˜ ๋™์•ˆ ์›น ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์›๊ฒฉ ๋ช…๋ น ์‹คํ–‰(SSH ๋˜๋Š” Windows RCP ์‚ฌ์šฉ) ์ด์™ธ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์š”์ฒญ/์‘๋‹ต ์Šคํƒ€์ผ ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ์„ ํ˜ธ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ HTTPS+JSON์— ์ˆ˜๋ ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ API๋Š” ์ตœ์‹  Python ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํ•ด๋‹น ๋ชจ๋ธ์˜ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€ ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.
  2. ์š”์ฒญ API๊ฐ€ ๋ชจ๋“  CPython ์žฌ๋ฐฐํฌ ์ฑ„๋„์— ์ž๋™์œผ๋กœ ํฌํ•จ๋˜๋„๋ก ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์—์„œ ๋ฒ•์  ํ‘œ์ค€์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๊ธฐ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  "ํ‘œ์ค€ ๋„์„œ๊ด€ ์ „์šฉ" ๊ต์œก ํ™œ๋™? (ํ›„์ž๋Š” ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€์ด ์ข…์ข… ์ง€์› ๋ฐ IP ๋ณด์žฅ์„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. CPython์—๋Š” ์žˆ์ง€๋งŒ ์š”์ฒญ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๋งŽ์€ ์‚ฌ์šฉ์ž๋Š” ๋‹จ์ˆœํžˆ ์š”์ฒญ์„ ์˜ต์…˜์œผ๋กœ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์Šน์ธ์„ ๋ฐ›๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.)
  3. API์™€ ๊ฐ™์€ ์š”์ฒญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์–ด๋–ค ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  4. API์˜ ๋ฒ„์ „ ๋…๋ฆฝ์  ๊ตฌํ˜„์œผ๋กœ ์š”์ฒญ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์œ ์ง€ํ•˜๋Š” ๋Œ€์‹  Guido๊ฐ€ ayncio ํ‘œ์ค€ํ™” ์ž‘์—…์— ์ ‘๊ทผํ•œ ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— API์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ ์ƒˆ ์š”์ฒญ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๊นŒ?

PSF ๊ด€๋ฆฌ ๊ฐœ๋ฐœ ์ž‘์—…์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋Š” ํ•œ, ์ €๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์„ ์ฒ˜๋ฆฌํ•  ๊ด€๋ฆฌ ์ธํ”„๋ผ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํฌ๊ฒŒ ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. PSF๊ฐ€ ์ด ๋ถ„์•ผ์˜ ํฌ๋ผ์šฐ๋“œ ํŽ€๋”ฉ ๋…ธ๋ ฅ์— ๊ธฐ์—ฌํ•  ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ๋ณด์กฐ๊ธˆ ์ œ์•ˆ์€ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ฒ€ํ† ํ•  ํŠน์ • ์ œ์•ˆ์ด ์—†์œผ๋ฉด ๋ณด์žฅํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ด๋””์–ด์ž„์€ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค).

์ผ๋ถ€ ๊ณต๊ธ‰์—…์ฒด๋Š” ์ด๋ฏธ ์š”์ฒญ์„ ์žฌ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ "์š”์ฒญ์— ๋Œ€ํ•œ ์ง€์›๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?" ๋ฒค๋”๋‚˜ ํ”Œ๋žซํผ ์ œ๊ณต์ž์—๊ฒŒ ๋ฌผ์–ด์•ผ ํ•˜๋Š” ๋ณ„๋„์˜ ์งˆ๋ฌธ์ด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์žฅ๊ธฐ์ ์ธ ์œ„ํ—˜ ๊ด€๋ฆฌ ๋งฅ๋ฝ์—์„œ(๋ช‡ ์ฃผ ๋˜๋Š” ๋ช‡ ๋‹ฌ์ด ์•„๋‹Œ ๋ช‡ ๋…„๊ณผ ์ˆ˜์‹ญ ๋…„์„ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค) ์ด์— ๋”ฐ๋ผ ์—…์ŠคํŠธ๋ฆผ์ด ์ง€๋ฃจํ•ด์ ธ์„œ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ ์ž์ฒด ์ง€์›์˜ ์œ„ํ—˜๊ณผ ์ฑ…์ž„์„ ๊ฐ์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ์ œ๊ณต์ž์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„์˜ ์ž ์žฌ์  ๊ฐ์†Œ๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋Ÿฐ ๊ฑฑ์ •์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฌ๋ฐฐํฌ์ž๋Š” ๋•Œ๋•Œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€๋งŒ ์ƒ์—…์ ์ธ ๋งฅ๋ฝ์—์„œ ์—…์ŠคํŠธ๋ฆผ์—์„œ ์ž‘๋™ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์ค‘๋‹จํ•˜๋Š” ๊ณต๊ธ‰์—…์ฒด๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ์ƒ๋‹นํ•œ ๋ ˆ๋ฒ„๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์•„, ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ์‹ค์ œ๋กœ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž์›ํ•˜๊ธฐ ์ „์— ๋Œ€๋‹ตํ•ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ํ•ต์‹ฌ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ „ ์„ธ๊ณ„ ์ฆ๊ถŒ ๊ฑฐ๋ž˜์†Œ์˜ ์ ˆ๋ฐ˜์— ์ „๋ ฅ์„ ๊ณต๊ธ‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ฑ…์ž„์„ ๋ฐ›์•„๋“ค์ผ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๊ธฐ์—… ์ธํ”„๋ผ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ณผํ•™ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด(ํ–‰์„ฑ ๊ฐ„ ์šฐ์ฃผ ์ž„๋ฌด์— ๋Œ€ํ•œ ๊ถค์  ๊ณ„ํš์— ์‚ฌ์šฉ ํฌํ•จ), ์›น ๊ฐœ๋ฐœ์— ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด ๋ฐ ๊ต์œก ๊ธฐ๊ด€์—์„œ ์ƒˆ๋กœ์šด ์ปดํ“จํ„ฐ ํ™œ์šฉ ๋Šฅ๋ ฅ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์— ์‚ฌ์šฉ๋˜๋Š” ํ•ต์‹ฌ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋งค์šฐ ๋‚ฎ์€ ์‹ ๋ขฐ์„ฑ ์ˆ˜์ค€(์ข…์ข… ๊ฐ€๋™ ์‹œ๊ฐ„ 99% ๋ฏธ๋งŒ)์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์„œ๋น„์Šค์—์„œ ์ผํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ๊นŠ์€ ์‹ ๋ขฐ ๋ฌธ์ œ๊ฐ€ ์ •๋‹นํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ง€ ์–ด๋ฆฌ์„์€ ์€ํ ์ •์น˜์˜ ๋ฌธ์ œ๋ผ๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๋™์•ˆ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋“ค์€ ์Šค์Šค๋กœ์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ์ž˜๋ชป๋œ ๊ฐ€์ •: ๋Œ€๋‹ค์ˆ˜์˜ Python ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์š”์ฒญ์€ ๊ณ ์‚ฌํ•˜๊ณ  pip์— ๋Œ€ํ•ด์„œ๋„ ๋“ค์–ด๋ณธ ์ ์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋“ค์€ ์žฅ๊ธฐ ์ง€์› Linux ๋ฆด๋ฆฌ์Šค์—์„œ ์‹œ์Šคํ…œ Python์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ข‹์€ ์•„์ด๋””์–ด๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์ƒํ™ฉ์ด ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋งํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ๋ฉธ์„ ์žฌ๋นจ๋ฆฌ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ฑ„ํƒ ์ฃผ๊ธฐ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋ช‡ ๋…„ ๋‹จ์œ„๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค. ๋” ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์—„๊ฒฉํ•œ CI๋ฅผ ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์‚ฐ์—…์€ ์•„์ฃผ ์ž‘์€ ๋ถ€๋ถ„์— ๋ถˆ๊ณผํ•˜๋ฉฐ, ๊ทธ ๋ถ€๋ถ„์— ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ๊ธฐ์กด์˜ ํฐ ํญ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์˜ ์šฐ๋ ค๋ฅผ ๋“ค์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์˜ค๋žซ๋™์•ˆ ์†๋„๋ฅผ ๋Šฆ์ถ”๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ•˜๊ณ  ํ˜„๋Œ€ํ™”ํ•ด์•ผ ํ•˜๋Š” ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์ฑ„ํƒ ๊ณก์„ ์˜ ์บ์ฆ˜ ์ดํ›„ ๋ถ€๋ถ„์€ "์˜ˆ, ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ด์ œ ์ถฉ๋ถ„ํžˆ ์„ฑ์ˆ™ํ•˜์—ฌ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ฐ€์–ด๋„ฃ๊ฑฐ๋‚˜ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ์ง„์ •์œผ๋กœ ๋ณดํŽธ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”์ •".

"์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ" ํ•„ํ„ฐ ๊ฑฐํ’ˆ์ด ์–ด๋–ป๊ฒŒ ์šฐ๋ฆฌ์˜ ๊ด€์ ์„ ์™œ๊ณกํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋กœ์„œ Jenkins๋Š” ๊ธฐ์—… CI ๋ฐฐํฌ์—์„œ 70% ์ด์ƒ์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค์— ํฌ๊ฒŒ ๊ด€์—ฌํ•˜๋Š” ๊ฐœ์ธ๊ณผ ์กฐ์ง์— ๋Œ€ํ•œ ๊ด€์ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ "๋ชจ๋‘๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š”" ๊ฒƒ์— ๋Œ€ํ•œ ์ง๊ด€์— ์˜์กดํ•˜๋Š” ๋ฐ๋Š” ๋งค์šฐ, ๋งค์šฐ ์‹ ์ค‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋‹ค์ˆ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ โ€‹โ€‹์—ฌ์ „ํžˆ โ€‹โ€‹ํŠน์ • ์กฐ์ง์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•œ ๋งž์ถคํ˜• ์ž‘์—…์ด๋ฉฐ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์•„๋‹Œ ์ƒ์šฉ ๊ณต๊ธ‰์—…์ฒด๋กœ๋ถ€ํ„ฐ ๋„๊ตฌ์™€ ์ •๋ณด๋ฅผ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@dcramer
๋ฌด์Šจ ์†Œ๋ฆฌ๋ฅผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํ† ๋ก ์— ๋งค์šฐ ์ ํ•ฉํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์ž…์žฅ์— ๋Œ€ํ•ด ์ •๋‹นํ•œ ๋ฐ˜๋ก ์„ ์ œ๊ธฐํ•  ๋•Œ, ๋‹น์‹ ์€ ์—ฌ์„ฑ์„ ๋น„ํ•˜ํ•˜๊ธฐ ์œ„ํ•œ ๋น„๋ฐฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”์Šค์— ๋Œ€ํ•œ ํŒŒ. ๊ณ„์†ํ•ด์„œ,


@ncoghlan

Re point 1: ๋ฌธ์„œ๋Š” stdlib์˜ ์š”์ฒญ(์œ ์‚ฌํ•œ ์š”์ฒญ)์œผ๋กœ ๋Œ€ํญ ๊ฐ„์†Œํ™”๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋ฐฐ์šธ ๋•Œ ๋‚ด๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ํ•˜๋Š” ์ผ ์ค‘ ํ•˜๋‚˜๋Š” HTTP๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๋ฉด ๊ฐ€์ด๋“œ๊ฐ€ ๊ด€๊ณ„์—†์ด ํ˜œํƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Re point 2: API์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์‹ค์ƒ ๋Œ€ ๋ฒ•์ ์œผ๋กœ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. API๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‰ฝ๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๊ด€์‹ฌ์€ ํฌํ•จ๋˜๋Š” ์š”์ฒญ(์ฝ”๋“œ)์— ๋” ์ค‘์ ์„ ๋‘˜ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Re ํฌ์ธํŠธ 3 & 4: ์—ฌ๊ธฐ์„œ ๋…ผ์˜ํ•  ๋‚ด์šฉ์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํŒŒ์ด์ฌ ์•„์ด๋””์–ด๊ฐ€ ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PSF ๊ด€๋ฆฌ ๊ฐœ๋ฐœ ์ž‘์—…์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋Š” ํ•œ, ์ €๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์„ ์ฒ˜๋ฆฌํ•  ๊ด€๋ฆฌ ์ธํ”„๋ผ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํฌ๊ฒŒ ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ํฅ๋ฏธ ๋กญ๊ตฐ์š”. ํ™•๋ฅ ์ด๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์ง€๋งŒ http(lib)๋ณด๋‹ค ๋” ์ข‹์€ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋Ÿฐ ๊ฑฑ์ •์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฌ๋ฐฐํฌ์ž๋Š” ๋•Œ๋•Œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€๋งŒ ์ƒ์—…์ ์ธ ๋งฅ๋ฝ์—์„œ ์—…์ŠคํŠธ๋ฆผ์—์„œ ์ž‘๋™ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์ค‘๋‹จํ•˜๋Š” ๊ณต๊ธ‰์—…์ฒด๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ์ƒ๋‹นํ•œ ๋ ˆ๋ฒ„๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๋ ˆ๋ฒ„๋ฆฌ์ง€๋ฅผ ๋ง์”€ํ•˜์‹œ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” CPython์—์„œ Debian๊ณผ ๋‹ค๋ฅธ ์žฌ๋ฐฐํฌ์ž๋“ค์— ์˜ํ•ด ํŒŒ์†๋œsurepip, venv ๋ฐ ๊ธฐํƒ€ ๊ฒƒ๋“ค์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ด ๋…ผ์˜์— ์ ‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„, ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ์‹ค์ œ๋กœ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž์›ํ•˜๊ธฐ ์ „์— ๋Œ€๋‹ตํ•ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ํ•ต์‹ฌ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ „ ์„ธ๊ณ„ ์ฆ๊ถŒ ๊ฑฐ๋ž˜์†Œ์˜ ์ ˆ๋ฐ˜์— ์ „๋ ฅ์„ ๊ณต๊ธ‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ฑ…์ž„์„ ๋ฐ›์•„๋“ค์ผ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๊ธฐ์—… ์ธํ”„๋ผ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ณผํ•™ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด(ํ–‰์„ฑ ๊ฐ„ ์šฐ์ฃผ ์ž„๋ฌด์— ๋Œ€ํ•œ ๊ถค์  ๊ณ„ํš์— ์‚ฌ์šฉ ํฌํ•จ), ์›น ๊ฐœ๋ฐœ์— ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด ๋ฐ ๊ต์œก ๊ธฐ๊ด€์—์„œ ์ƒˆ๋กœ์šด ์ปดํ“จํ„ฐ ํ™œ์šฉ ๋Šฅ๋ ฅ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์— ์‚ฌ์šฉ๋˜๋Š” ํ•ต์‹ฌ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๋ฏธ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํ˜„์žฌ ๊ด€๋ จ๋œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์†ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์—…์ŠคํŠธ๋ฆผ CPython ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๋‚ด ์‹ค์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๊ธฐ์กด(๋ฐ ๋‹ค๋ฅธ ๋ฏธ๋ž˜) ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ทธ ๋ถ€๋‹ด์„ ๋– ๋„˜๊ธฐ๋Š” ๊ฒƒ์€ ์ƒ์‚ฐ์ ์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์ฑ„ํƒ ๊ณก์„ ์˜ ์บ์ฆ˜ ์ดํ›„ ๋ถ€๋ถ„์€ "์˜ˆ, ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ด์ œ ์ถฉ๋ถ„ํžˆ ์„ฑ์ˆ™ํ•˜์—ฌ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ฐ€์–ด๋„ฃ๊ฑฐ๋‚˜ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ์ง„์ •์œผ๋กœ ๋ณดํŽธ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”์ •".

๊ทธ ์‚ฌ๋žŒ๋“ค์€ ์ ˆ๋Œ€ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ด์ฃ ? ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹Python 2.4 ๋ฐ 2.5์—์„œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. F5์˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” ์—ฌ์ „ํžˆ Python 2.5๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. 2.7์€ ์•„๋งˆ๋„ ๋‚ด ์‚ถ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฐ์ •์ด ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์‚ฌ๋žŒ๋“ค์ด ๊ณผ์—ฐ ์ด ์‚ฌ๋žŒ๋“ค์ผ๊นŒ์š”? ๋‹น์‹ ์ด ์„ค๋ช…ํ•˜๋Š” ๋ฐ”๋กœ ๊ทธ ์‚ฌ๋žŒ๋“ค์€ ๊ฒฐ์ฝ” Python 3๋กœ ๋„์•ฝํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ, ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹_leap_์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•  ๋•Œ์ฏค์ด๋ฉด Python 3.8, 3.9, 4.2๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๊ณ  ๊ทธ๋“ค์—๊ฒŒ๋Š” ํ›จ์”ฌ ๋œ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌํ•จ์˜ ๋ชฉ์ ์ด ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์˜ ๋ชฉ์ ๊ณผ _๋งค์šฐ_ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ ํŒ€์ด ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ๊ณ„์† ์ œ๊ณตํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ (์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ํ›Œ๋ฅญํ•œ ์ผ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!) API ํ‘œ์ค€ํ™”๋ฅผ ์ง€์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, RHEL/Fedora/CentOS, Debian/Ubuntu, ActiveState, Enthought ๋ฐ Continuum Analytics์™€ ๊ฐ™์€ ์žฌ๋ฐฐํฌ์—…์ฒด์—์„œ ๋ชจ๋“ˆ์„ ์„ ํƒํ•˜๊ณ  ํ‘œ์ค€ํ™”ํ•˜์—ฌ _์–ด์จŒ๋“ _ ์‚ฌ๋žŒ๋“ค์€ ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ข…์†์„ฑ ์„ ์–ธ์œผ๋กœ ์™„์ „ํžˆ ํŒจํ‚ค์ง€๋˜์ง€ ์•Š์€ ๋‹จ์ผ ํŒŒ์ผ ์Šคํฌ๋ฆฝํŠธ์˜ API์— ์˜์กดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ์ž…๋ฌธ ๋ฌธ์„œ๋Š” ์—ฌ์ „ํžˆ ์‚ฌ๋žŒ๋“ค์„ HTTP ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์ด๋Œ ๊ฒƒ์ด๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์ด "ํŒŒ์ด์ฌ์šฉ HTTP, 2001๋…„ํŒ" ๋˜๋Š” "ํŒŒ์ด์ฌ์šฉ HTTP, 2015๋…„ํŒ"์„ ๋ฐฐ์› ๋Š”์ง€ ์—ฌ๋ถ€๋Š” "ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์šฉ" ์†Œ์Šค ๋˜๋Š” ๊ถŒ์žฅ๋˜๋Š” ํƒ€์‚ฌ ๋ชจ๋“ˆ์„ ํฌํ•จํ•˜๋Š” ์†Œ์Šค.

virtualenv ๋ฐ PEP 405, Twisted+Tornado ๋Œ€ asyncio ๋˜๋Š” ipaddr ๋Œ€ ipaddress์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— _์š”์ฒญ ์ž์ฒด_๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๋ชจ๋“  ๊ต์ฐจ ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ์ฝ”๋“œ, ์ธ์ฆ์„œ ๋ฒˆ๋“ค ๋“ฑ์„ ์ƒ๋žตํ•˜๊ณ  ์ธ์ฆ๋œ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ API ๋ฐ ๋ฌธ์„œ๋ฅผ 2015๋…„๊นŒ์ง€ ๊ฐ€์ ธ์˜ค๋Š” ์š”์ฒญ _์˜๊ฐ_ API๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€. ๊ทธ๋Ÿฐ ๋‹ค์Œ 2030๋…„์—๋Š” _requests_ API ๋””์ž์ธ์ด 2030๋…„ ํ‘œ์ค€์— ๋”ฐ๋ผ ์–ผ๋งˆ๋‚˜ ๊ตฌ์‹์ธ์ง€("HTTP? ๋ˆ„๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?!?!") ๋ถˆํ‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค(์ฒซ ๋ฒˆ์งธ AJAX๊นŒ์ง€ ๊ทธ๋Ÿฐ ๋‹ค์Œ JSON์ด ๋“ฑ์žฅํ–ˆ๊ณ  XML-RPC๋Š” ์–ธ๋•์˜ ์™•์ด์—ˆ์Šต๋‹ˆ๋‹ค). ์‚ฌ๋žŒ๋“ค์ด ๊ตฌ์‹์ด๋ผ๊ณ  ๋ถˆํ‰ํ•˜๊ธฐ ์ „์— API ๋””์ž์ธ์—์„œ 5๋…„์„ ๋ณด๋‚ธ๋‹ค๋ฉด ๋‹น์‹ ์€ ๊ฝค ์ž˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๊ณ  10๋…„์€ ์ธ์ƒ์ ์ด๊ณ  15๋…„์€ ์ •๋ง ์žฅ๊ด€์ž…๋‹ˆ๋‹ค.

๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ‘œ์ค€ํ™” ๋…ธ๋ ฅ์„ ์ง€์ง€ํ•˜๊ณ  ๊ตฌํ˜„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ตœ์†Œํ•œ stdlib ์œ ์ง€ ๊ด€๋ฆฌ์˜ ์ฒ˜์Œ ๋ช‡ ๋…„์— ์ „๋…ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์š”์ฒญ API๋ฅผ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์•„์ด๋””์–ด์— ์ถฉ๋ถ„ํžˆ ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌ๋ฐ›์€ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ๋Œ€์•ˆ์€ ์ธํ„ฐ๋„ท์—์„œ ์ž„์˜์˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์žฌ๋ฐฐํฌ์—…์ฒด์— ๊ณ„์† ํฌ๊ฒŒ ์˜์กดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์—„๊ฒฉํ•œ ๊ทœ์ œ ์‹ค์‚ฌ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๋ชจ๋“  ์‚ฐ์—… ๋ถ„์•ผ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ํฌํ•จํ•˜๋Š” ๋ฒ”์ฃผ๋Š” ๋ฌผ๋ก  ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ„ํ—˜์— ๋Œ€ํ•œ ์„ ํ˜ธ๋„๊ฐ€ ๋‚ฎ์€ ๋‹ค๋ฅธ ์กฐ์ง์—์„œ ์ผํ•จ).

๋‹ค๋ฅธ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ๊ณผ ๊ด€๋ จํ•˜์—ฌ ํ˜„์žฌ ๋ฐ๋น„์•ˆ์˜ ์˜ํ–ฅ๋ ฅ์€ ์ƒ๋Œ€์ ์œผ๋กœ ์•ฝํ•˜์ง€๋งŒ, ์œ ๋ฃŒ ๊ณ ๊ฐ์ด ์—…์ŠคํŠธ๋ฆผ ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ์„œ ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •ํ•œ ๊ธฐ๋Œ€์น˜์— ๋น„ํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ง์ ‘ ๋ถˆํ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์—…์ ์œผ๋กœ ์ง€์›๋˜๋Š” ์žฌ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ ๋ ˆ๋ฒ„๋ฆฌ์ง€๊ฐ€ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ ์ธก๋ฉด์—์„œ ์—…์ŠคํŠธ๋ฆผ ํ‘œ์ค€ํ™”(Python 3์—์„œ๋„)๊ฐ€ ์ „๋‹ฌํ•˜๋Š” ํ•ต์‹ฌ ์ค‘ ํ•˜๋‚˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํ•ฉ์˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Python 3 ๊ธฐ๋Šฅ์˜ "๋ฐฑํฌํŠธ"์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Python 2์™€์˜ ๋ฒˆ๋“ค๋ง์„ ์ •๋‹นํ™”ํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์—ฌ์ „ํžˆ ํ•ด๋‹น ๋ฒˆ๋“ค๋ง(unittest2, subprocess32, enum34, contexlib2)์„ ์ˆ˜ํ–‰ํ•˜๋Š” Python 2์˜ ์Šค๋ชจ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. , trollius ๋“ฑ), ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ทธ ์ž์ฒด๋กœ ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ ์ •์น˜์  ์‹ธ์›€์ž…๋‹ˆ๋‹ค. ํŠนํžˆ 2020๋…„๊นŒ์ง€ ๊ทธ๋Ÿฌํ•œ ์žฌ๋ฐฐํฌ์ž ๋…๋ฆฝ ์Šค๋ชจ ์œ ํ†ต์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ด€์‹ฌ๊ณผ ์ž์›์ด ์‹ค์ œ๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์—์„œ ์‚ฌ๋žŒ๋“ค์„ ์„ค๋“ํ•˜๋Š” ์ธก๋ฉด์—์„œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

@dcramer ์‹œ๊ฐ„์„ ๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค โ€” ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :heart:

@sigmavirus24 ๋ชจ๋‘ ์ž˜

๋‚˜๋Š” stdlib ํฌํ•จ ์ „๋ฉด์— ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด ๋ณ„๋กœ ์—†์Šต๋‹ˆ๋‹ค.
์ผ๋ถ€ PEP ๋˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๋ณด๊ฑฐ๋‚˜ ์ง„ํ–‰ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
Python stdlib์—์„œ, ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์ž‘๋…„ ์ •๋„๋ฅผ ๋˜๋Œ์•„๋ณด๊ธฐ ์œ„ํ•ด
"์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€์˜ ๊ด€์ ์—์„œ ๊ฐœ๋ฐœ
์ด๊ฒƒ์ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชจ๋“ˆ์ด๋ผ๋ฉด ๋‹ค๋ฆ…๋‹ˆ๋‹ค."

์ด๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์ด ๋งํ•  ๋•Œ ๋ณด๋Š” ์‚ฌ์‹ค์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
"stdlib์— ์š”์ฒญ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ฌด์—‡์„ ์ถ”๊ฐ€/๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋‚˜์š”?",
์˜ˆ์™ธ ๊ณ„์ธต์„ ์—…๋ฐ์ดํŠธํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ ๋” ์™ธ์น˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. NS
์ผ๋ฐ˜์ ์œผ๋กœ ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด ๋‘ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์˜๋ฏธ? b) ์š”์ฒญ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
DNS ์กฐํšŒ ์‹คํŒจ์™€ ๊นจ์ง„ ํŒŒ์ดํ”„๋Š” ๋งค์šฐ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์š”์ฒญ์€ ํ˜„์žฌ ๋‘˜ ๋‹ค ConnectionError๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ–ˆ๋‹ค
์—ฌ๊ธฐ์— ๊ด€๋ จ๋œ ์ž‘์—…:
https://gist.github.com/kevinburke/b98e053a4bf9835c67bb

๊ด€์‹ฌ์žˆ๋Š” ๋ถ„๋“ค๊ณผ ๋” ๋งŽ์€ ํ† ๋ก ์„ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ผ€๋นˆ ๋ฒ„ํฌ
์ „ํ™”: 925.271.7005 | 20๋ฐ€๋ฆฌ์ดˆ.com

2015๋…„ 1์›” 25์ผ ์ผ์š”์ผ ์˜คํ›„ 8์‹œ 15๋ถ„์— ncoghlan [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

"์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ"๊ฐ€ ํ•„ํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ์˜ˆ
๊ฑฐํ’ˆ์€ ์šฐ๋ฆฌ์˜ ๊ด€์ ์„ ์™œ๊ณกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: Jenkins๋Š” 70% ์ด์ƒ์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์—… CI ๋ฐฐํฌ์—์„œ.

์ง๊ด€์— ์˜์กดํ•˜๋Š” ๋ฐ ์žˆ์–ด "๋ชจ๋“  ์‚ฌ๋žŒ์ด
๋‹น์‹ ์ด ๊ทธ ๊ด€์ ์„ ๊ฐœ์ธ๊ณผ
์˜คํ”ˆ ์†Œ์Šค์— ๋งŽ์ด ๊ด€์—ฌํ•˜๋Š” ์กฐ์ง. ๋Œ€๋‹ค์ˆ˜
์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ โ€‹โ€‹์—ฌ์ „ํžˆ โ€‹โ€‹์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•œ ๋งž์ถคํ˜• ์ž‘์—…์ž…๋‹ˆ๋‹ค
ํŠน์ • ์กฐ์ง, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ผ์„ ํ•˜๋Š” ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์€
์—ฌ์ „ํžˆ ์ƒ์—… ๊ณต๊ธ‰์—…์ฒด๋กœ๋ถ€ํ„ฐ ๋„๊ตฌ์™€ ์ •๋ณด๋ฅผ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๋ณด๋‹ค

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kennethreitz/requests/issues/2424#issuecomment -71413074
.

FWIW, ๋‚˜๋Š” http://docs.python-requests.org/en/latest/dev/philosophy/ ์˜ ๋ฌธ๊ตฌ๋ฅผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Essentially, the standard library is where a library goes to die.
It is appropriate for a module to be included when active 
development is no longer necessary.

์ž˜๋ชป ํ•ด์„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๊ฒฝ๋ฉธ์ ์ธ ํƒœ๋„์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ฃฝ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๊นŒ์ง€ ์งœ์ฆ์ด ๋‚ฌ๊ณ  ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” ํฅ๋ฏธ๋กœ์šด ํ† ๋ก ์ด๋ฉฐ ์œ„์˜ ๋ฌธ๊ตฌ๋ณด๋‹ค ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰