๋ง์ ๋ด์ฉ์ด ์์ง๋ง ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค...
Python ์ปค๋ฎค๋ํฐ ์ ์ฒด๊ฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐ๋๋ ์์ฒญ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๊น?
์ฃผ์ ์ ๋ํ ๊ทํ์ ์๊ฐ๊ณผ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค!
์, ์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๊ณ ์ฑ๋ฅ์ ํฌ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ๊ทธ๋ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ค์ํ๊ฒ ์๊ฐํ๋ ์๊ฒฌ์ ๊ฐ์ง ์ฌ๋๋ค์ ์ฐธ์กฐํฉ์๋ค.
@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์ ๋ํด ๋ค์ด๋ณธ ์ ์ด ์์ต๋๊น?
๊ธ์, ๋๋์ด ํ ๋ก ์ ๋ ๋ ๊ฑฐ์ผ. ์ ์๊ฒฌ์ ๋ถ๋ช ํ ํ์ต๋๋ค. ๋ฌด์จ ์๋ฆฌ๋ฅผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋๋ตํด์ผ ํ ๋ช ๊ฐ์ง ํต์ฌ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
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.
์๋ชป ํด์๋ ์ ์์ต๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ฒฝ๋ฉธ์ ์ธ ํ๋์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ๋ฌผ๋ก ์ฃฝ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ์ฑ๋์ง๋ ์์ต๋๋ค. ๋๋ ์ด ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ ๋๊น์ง ์ง์ฆ์ด ๋ฌ๊ณ ์์ฒญ์ ์ฌ์ฉํ์ง ์์์ต๋๋ค. ์ด ํ์ด์ง๋ ํฅ๋ฏธ๋ก์ด ํ ๋ก ์ด๋ฉฐ ์์ ๋ฌธ๊ตฌ๋ณด๋ค ํจ์ฌ ์ข์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ธ์, ๋๋์ด ํ ๋ก ์ ๋ ๋ ๊ฑฐ์ผ. ์ ์๊ฒฌ์ ๋ถ๋ช ํ ํ์ต๋๋ค. ๋ฌด์จ ์๋ฆฌ๋ฅผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.