Requests: рдмрд╣реБрдд рд╕рд╛рд░реА рдЦреБрд▓реА рд╣реБрдИ рдлрд╛рдЗрд▓реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдирд╡ре░ 2011  ┬╖  81рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: psf/requests

рдореИрдВ рдПрдХ рдореВрд▓ рд▓реЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рджреЗрдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдбреЙрдХреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдЕрдиреБрд░реЛрдз рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдХрд╣реАрдВ рд▓реАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ (рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛) рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдереЛрдбрд╝рд╛ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдБ рдХрд┐ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдХреЛ рдЖрдЦрд┐рд░ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛)

Bug Contributor Friendly

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

"рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЦреБрд▓реА рдлрд╛рдЗрд▓реЗрдВ" CLOSE_WAIT рдореЗрдВ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдХрд╛рд░рдг рдмрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
рддреЛ ulimit рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╕рднреА 81 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЬрд╣рд╛рдБ рдЖрдк requests.async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдирд╣реАрдВ, рд╕рднреА рдЕрдиреБрд░реЛрдз рдпрдереЛрдЪрд┐рдд рд╕рд╛рджреЗ рдЕрдиреБрд░реЛрдз рдереЗ

$ lsof | grep localhost | wc -l
110

рд╕рднреА рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ 4/5 рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╣реИрдВ

Python    82117 daleharvey  123u    IPv4 0xffffff800da304e0       0t0      TCP localhost:61488->localhost:http (CLOSE_WAIT)

рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЪрдХрд┐рдд рд╣реВрдБ, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред

рдЕрдЧрд░ рдореИрдВ рдмреАрдорд╛рд░ рдирд╣реАрдВ рд╣реВрдБ рддреЛ Hah рдмреАрдорд╛рд░ рдЗрд╕реЗ рдордЬрд╝рдмреВрддреА рд╕реЗ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╢реЙрдЯ рд▓реЗрддреЗ рд╣реИрдВ

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрддреЗ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрдм рдЬрдм рдореИрдВ async рдореЙрдбреНрдпреВрд▓ w / 200+ рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рдЕрдиреБрд░реЛрдз рдФрд░ рдЬреЗрдВрдЯ рдХреЗ рд╕рд╛рде рдмрдВрджрд░ рдкреИрдЪрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╕реНрдпрд╛ рдереА: CLOSE_WAIT рдореЗрдВ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдХрдиреЗрдХреНрд╢рдиред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛред

рдпрд╣ ulimit -n рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдПрдХ рдЙрдЪреНрдЪ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

"рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЦреБрд▓реА рдлрд╛рдЗрд▓реЗрдВ" CLOSE_WAIT рдореЗрдВ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдХрд╛рд░рдг рдмрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
рддреЛ ulimit рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@tamiel рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ?

рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ:

https://gist.github.com/1512329

рдореБрдЭреЗ рдХреЗрд╡рд▓ HTTP рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ async рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдореИрдВ рдЕрднреА рднреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд▓ рдЖрдХрд╛рд░ рдХреЛ async.map рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдЬрд▓реНрджреА рд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдзрд╛рд░? рдпрд╣ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдиреБрдкрдпреЛрдЧреА рдмрдирд╛рддрд╛ рд╣реИред

рдпрд╣ рд╕рдм CLOSE_WAIT s рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЕрднреА рднреА рдЦреБрд▓реЗ рдХреНрдпреЛрдВ рд╣реИрдВред

рдпрд╣ рдПрдХ urllib3 рдореБрджреНрджрд╛ рд╣реИ? рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдЗрди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореБрджреНрджреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рд╣рдо рдпрд╣рд╛рдВ рдмрд╛рддрдЪреАрдд рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рдмрд╕ рдЖрдкрдХреЛ рдПрдХ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░рд┐рдлрд╝реНрд▓реЗрдкреНрд╕ 2 рд╕реЗ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрд╕ рдорд╕рд▓реЗ рдХреЛ рд╕рд┐рдкреНрд▓рд╛рдм 2 рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЧрдВрднреАрд░ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рддреЛ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рд░рд┐рд╕рд╛рд╡ рдЖрдВрддрд░рд┐рдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд▓рдВрдмрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирдП рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдореЗрдВ acdha @ 730c0e2e2bef77968a86962f9d5f2bebba4d19ec рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрднреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрддреЛрд╖рдЬрдирдХ рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡реА рд╕реБрдзрд╛рд░ рд╣реИред

рдпрд╣ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╕реЗ рдмрд╛рд╣рд░ рд╣реВрдВред

399 рдореЗрдВ рдПрдХ рдлрд┐рдХреНрд╕ рд╣реИ рдЬреЛ рд╣рдЬрд╛рд░реЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдХрдо fd ulitit рдХреЗ рд╕рд╛рде рдореЗрд░реЗ async рд▓реЛрдб рдЬрдирд░реЗрдЯрд░ (https://github.com/acdha/webtoolbox/blob/master/bin/http_bench.py) рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ - рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдордВрдерди рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ / рдХреЙрд▓рд┐рдВрдЧ рд╣рдЯрд╛рдиреЗ рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╣рд▓ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдореИрдВ рдЖрдЬ рдПрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдХреЗрд╡рд▓ 5 рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ 60 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд░реБрдХрд╛ рд╣реБрдЖ рд╣реЛ, async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВ рдХреЗрд╡рд▓ 4 рдЪреАрдЬреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрд╛ред

рдЦрдкрдд рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп GET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВ 40 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 150 рдЪреАрдЬреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрд╛ рд╣реИ рддрдм рд╕реЗ рдореЗрд░реА рдХреАрдЪрдбрд╝ рдирд╣реАрдВ рдмрдирд╛ рд╣реИред

рдмрд╕ ipython рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдФрд░ рдпрд╣ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ред рдпрд╣ рдмрд╕ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдорд┐рд▓рд╛ред

ERROR: Internal Python error in the inspect module.
Below is the traceback from this internal error.
Traceback (most recent call last):
    File "/Library/Python/2.7/site-packages/IPython/core/ultratb.py", line 756, in structured_traceback
    File "/Library/Python/2.7/site-packages/IPython/core/ultratb.py", line 242, in _fixed_getinnerframes
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/inspect.py", line 1035, in getinnerframes
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/inspect.py", line 995, in getframeinfo
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/inspect.py", line 456, in getsourcefile
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/inspect.py", line 485, in getmodule
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/inspect.py", line 469, in getabsfile
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 347, in abspath
OSError: [Errno 24] Too many open files

Unfortunately, your original traceback can not be constructed.

рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд░реНрдл рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдореБрдЭреЗ "рдореИрдХреНрд╕ рд░рд┐рдЯреНрд░реАрдЬрд╝ рдПрд░рд░" рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рд╕рднреА рд╕рдорд╛рди рдбреЛрдореЗрди рдкрд░ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ allow_redirects True рдерд╛; рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдбрд╛рдпрд░реЗрдХреНрд╢рди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реАрдХ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реАрдлрд╝реЗрдЪ = рдЯреНрд░реВ рдХреЗ рд╕рд╛рде рднреА рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рддрдп рдХрд┐рдпрд╛:

        [i.raw.release_conn() for i in resp.history]
        resp.raw.release_conn()

рд╣рдореНрдордо редред

@acdha рд╕реЗрдЯрд┐рдВрдЧ:

requests.defaults.defaults['allow_redirects'] = False

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ рдЕрднреА рднреА рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЬреЛ рднреА рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди = / рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

@dalanmiller рдЖрдк рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВ рдкрд╣рд▓реЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реБрдХ рдХреЗ рд╕рд╛рде async.map рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ async.imap рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░рд▓ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдерд╛ред

for resp in requests.async.imap(reqs, size=8):
    try:
        print resp.status_code, resp.url
    finally:
        [i.raw.release_conn() for i in resp.history]
        resp.raw.release_conn()

@ рдЖрдХрдж

рдореИрдВ рдмрд╕ рдПрдХ рдпреВрдЖрд░рдПрд▓ рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рде рдПрдХ request.get рдХрд░ рд░рд╣рд╛ рдерд╛ред

for u in urls:
    response_list.append(requests.get(u))

рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдореЗрд░реА 900 рд▓рдВрдмрд╛рдИ рдХреА рд╕реВрдЪреА рдореЗрдВ рд▓рдЧрднрдЧ 50 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП "url рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрддрдо рд░рд┐рдЯреНрд░рд┐рдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛" рд╢реБрд░реВ рди рд╣реЛ рдЬрд╛рдПред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╣реА рдбреЛрдореЗрди рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд╣реАрдВ?

рдЕрд░реЗ, рдореИрдВ 35k url рдХреА рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕реВрдЪреА рдХреЛ рдХреНрд░реЙрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ _some_ рдкрд░ рдпрд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред

рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ 10 рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреЗрд╢рд╛рдм рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ:

responses = requests.async.map([requests.async.get(u, params=self.params()) for u in chunk]) # chunk is a list of 10

рдХрд╣реАрдВ 20k рд░реЗрдВрдЬ рдореЗрдВ рдореБрдЭреЗ 24 рддреНрд░реБрдЯрд┐ рдорд┐рд▓рдиреА рд╢реБрд░реВ рд╣реЛ рдЧрдИ, рддреЛ рдпрд╣ рдареАрдХ 30k рдФрд░ рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЧрдИред

рдХрд┐рд╕реА рднреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЖрдк рдЗрд╕реЗ рдиреАрдЪреЗ рд╕рдВрдХреАрд░реНрдг рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛрдЧреА?

requests.async рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк grequests рдкрд░ рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдм рдареАрдХ рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред рдбреЙрдХреНрд╕ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд░рд╣реЗрдЧрд╛ред

рдПрдХ рдиреЛрдм рдХреА рддрд░рд╣ рдЬрдм рдпрд╣ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд▓реЗрдЦрди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдПрдХ рдЫреБрд░рд╛ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рднреЗрдЬрд╛ред рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдпрд╛ рдЖрд▓реЛрдЪрдирд╛ рдХрд░реЗрдВ :)

https://github.com/kennethreitz/requests/pull/665

рдареАрдХ рд╣реИ, рдпрд╣ 6k рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рдж, рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде, async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рдЦреБрд╢ рд╣реИред

рдореБрдЭреЗ рдЙрд╕ рдкрд░ рд╢рдХ рд╣реБрдЖред

рдореЗрд░реЗ рд▓рд┐рдП 'рдмрд╣реБрдд рдЦреБрд▓реА рд╣реБрдИ рдлрд╛рдЗрд▓реЗрдВ' рддреНрд░реБрдЯрд┐ 1k рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реБрдИред рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рдерд╛ рдХрд┐ рдЬреАрд╡рд┐рдд-рдЬреАрд╡рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП, рдХрднреА рднреА рдЪрдВрдХреНрд╕ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП ( lsof -p PID | wc -l рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХрдиреЗрдХреНрд╢рди рдХреА рдЧреИрд░-рдмрдврд╝рддреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

rsess = requests.session()
rsess.config['keep-alive'] = False

rs = [grequests.get(l, session=rsess) for l in links]

for s in chunks(rs,100):
    responses = grequests.map(s, size=concurrency)
    for r in responses:
        try:
            print(r.status_code, r.url)
        finally:
            r.raw.release_conn()

[рез] рдЪреМрдХрд╛ рд▓рдЧрд╛рдирд╛: http://stackoverflow.com/a/312464

Urllib3 рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╕рдордп рдмрдВрдж рдХрд░рдирд╛ред

@kennethreitz urllib3 рдХреА рдЕрдВрдХ рд╕рдВрдЦреНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ http://bugs.python.org/issue16298

@silvexis рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ urllib3 рдмрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдм рдореИрдВ рдЪрд╛рд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ @ piotr-dobrogost: P рдХрд╛ рдЬрд╡рд╛рдм рджреЗред

рдХреНрдпрд╛ рдЕрдм рднреА рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреЛрдИ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рд╕реБрдиреА рд╣реИред рд╣реЗ рдирд╛ рддреВ?

рдпрд╣ рдмреЙрдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдирд╣реАрдВред рдЕрдкрдиреЗ OS рдХреЗ рдХрд░реНрдиреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рджреЗрдЦреЗрдВред рдмреАрдПрд╕рдбреА рдореЗрдВ рдЗрд╕реЗ kern.maxfiles рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рдЧрднрдЧ ulimit рдХрд╛ рдзрд╛рдЧрд╛ рд╣реИ: http://stackoverflow.com/questions/34588/how-do-i-change-the-number-of-open-files-limit-in-linux
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИред

рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдХрд┐ рд╣рдо рдЕрднреА рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди, рднрдпрд╛рдирдХ, рдХреЛрдб рд╣реИрдВ:

    if self._current_response is not None:
            # Requests doesn't have a clean API to actually close the
            # socket properly. Dig through multiple levels of private APIs
            # to close the socket ourselves. Icky.
            self._current_response.raw.release_conn()
            if self._current_response.raw._fp.fp is not None:
                sock = self._current_response.raw._fp.fp._sock
                try:
                    logger.debug('Forcibly closing socket')
                    sock.shutdown(socket.SHUT_RDWR)
                    sock.close()
                except socket.error:
                    pass

(рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ self._current_response рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБ рд╣реИ)

рд╣рдореНрдо, рдмрдВрдж рд╣реЛрдиреЗ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╣рд╛рдБ рдЯреВрдЯреА рд╣реБрдИ рд╣реИ? рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Response.close() рдкрджреНрдзрддрд┐ рд╣реИ, рдЬреЛ release_conn() рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП release_conn() рд╣реЛрдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

@ рд▓реБрдХрд╛рд╕рд╛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ urllib3 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ред рдЕрдкрдиреЗ рдЕрдиреБрдорд╛рди рдореЗрдВ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд╣реЛрдиреЗ рдХреЗ рдкреНрд░рддрд┐ рдЭреБрдХрд╛рд╡ рдХреЗ рд╕рд╛рде, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз 1.2.x рдХреЗ рдмрд╛рдж рд╕реЗ рд╣реИ рдЕрдЧрд░ 1.1.x рдирд╣реАрдВред

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдп рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рддрдХ рд╣рдо 1.2.3 рдкрд░ рдХреБрдЫ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдореИрдВ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

рдореИрдВ 2.0.2 рдХреЗ рд╕рд╛рде CLOSE_WAIT рд▓реАрдХ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдХрд┐ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдЧрдорди рдирд╣реАрдВ рд╣реИ?

рдирд╣реАрдВ, рд╣рдо рдирд╣реАрдВред AFAIK urllib3 рдпрд╛ рддреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рд░рд┐рд╕рд╛рд╡ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рдо рд╕реЛрдорд╡рд╛рд░ рд╕реЗ рд╣рдорд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ рдРрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдЬ 1024 рдЕрдзрд┐рдХрддрдордлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред

рд░рд┐рдмреВрдЯ рдХреЗ 2 рдШрдВрдЯреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 40 CLOSE_WAIT рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ lsof рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рджреЗрд╡ рдорд╛рд╣реМрд▓ рдореЗрдВ рдкреНрд░рдЬрдирди рдХрд░ рдкрд╛рдПрдВрдЧреЗ, рд╣рд╛рдВред рдЖрдк рд╕реЗ рд╕рдВрдкрд░реНрдХ рдмрдирд╛ рд░рд╣реЗрдЧрд╛

@tardyp рднреА, рдЖрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА OS рдкреИрдХреЗрдЬ рдореЗрдВрдЯреЗрдирд░реНрд╕ urllib3 рдХреЛ рд╕реНрдЯреНрд░рд┐рдк рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╡реЗ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдЬрдЧрд░ 2.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП python2.7 рдкрд░ рдлрд┐рдХреНрд╕ рджреЗрдЦрд╛ рд╣реИ
рдпрд╣ рдмрдЧред рдХреНрдпрд╛ рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдордВрдХреАрдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ?

рдкрд┐рдпрд░реЗ

рд╢реБрдХреНрд░ рдкрд░, 29 рдирд╡рдВрдмрд░, 2013 рдХреЛ рд╢рд╛рдо 5:33 рдмрдЬреЗ, рдЗрдпрд╛рди рдХреЙрд░реНрдбреИрд╕реНрдХреЛ рд╕реВрдЪрдирд╛рдПрдВ @github.comwrote:

@tardyp https://github.com/tardyp рднреА, рдЖрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛? рдореИрдВ
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА OS рдкреИрдХреЗрдЬ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдиреЗ urllib3 рдХреЛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рд╡реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рдЙрд╕ рдЕрдк-рдЯреВ-рдбреЗрдЯ рд░рдЦреЗрдВ рдФрд░ рдЖрдк рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░рдгред рдпрджрд┐ рдЖрдк рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ
рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░реЗрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ Gi tHubhttps рдкрд░
ред

@tardyp рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдЙрддрдиреЗ рд╡рд┐рд╡рд░рдг рд╕рд╣рд┐рдд рдЦреЛрд▓реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЖрдк рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рднреА рд╡рд┐рд╡рд░рдг рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ред

FYI рдХрд░реЗрдВ https://github.com/shazow/urllib3/issues/291 рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореБрдЭреЗ рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ!

@polvoazul рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ 2011 рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рд╕рд╣реА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬрд╝ (2.4.3) рдХреЛ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ред

@Lukasa рдореБрдЭреЗ рдЖрдкрдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ

рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @mygoda , рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдПрдХ рд╕рдордп рдореЗрдВ рдмрдХрд╛рдпрд╛ рд╣реЛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдореА рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреБрдирд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕рдорд╕реНрдпрд╛ рд╣реИред

@Lukasa рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж my рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдЗрд╕ you рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╣реИ, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛

рдЕрдм рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, 120 рдзрд╛рдЧреЗ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, 100000+ рдЦреЛрд▓реА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реИ, рдЕрднреА рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

@mygoda рдЖрдк рдХрдорд╛рд▓ рдХреЗ рдкреАрд░рд┐рдпрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ use

@ 1a1a11a _What_ рдлрд╛рдЗрд▓реЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИрдВ? рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдкрд╣рд▓рд╛ рдХрджрдо рд╣реЛрдЧрд╛ред

@ 1a1a11a рдЖрдк рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЕрдЬрдЧрд░ рдХрд╛ рдХреНрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг? рдХреНрдпрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо? рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓ рд╕рдХрддреА рд╣реИ?

рдореИрдВ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ 2.9.1, рдЕрдЬрдЧрд░ 3.4, ubuntu 14.04, рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдХреБрдЫ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ 30 рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХреНрд░реЙрд▓рд░ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕реАрдорд╛ рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ 655350 рдкрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рдЕрднреА рднреА "рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓" рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд░рд╣реА рд╣реИ: [Errno 24] рдмрд╣реБрдд рд╕рд╛рд░реА рдЦреБрд▓реА рдлрд╛рдЗрд▓реЗрдВ "request.packages.urllib3.connection.VerifiedHTTPSConnection рд╕реЗред" рдореИрдВ Pyth 3.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, 2.11.1 рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ-рд╡рд╛рдпрджрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред 0.9.7ред рдореИрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ-рд╡рд╛рдпрджрд╛ рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдЖ рд░рд╣реА рд╣реИред рдореИрдВ SSL рдкрд░ 180k рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ 1000 рдХреЗ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВред рднрд╡рд┐рд╖реНрдп рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╣рд▓ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЕрдЧрд▓реЗ 1000 рдкрд░ рдЬрд╛рдПрдВред рдореИрдВ Ubuntu 16.04.2 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЦреБрд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реАрдорд╛ 1024 рд╣реИред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░рдг рдХреЛ рд╕рдордЭрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓реА рдлрд╝рд╛рдЗрд▓? рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреНрдпреЛрдВ? рдпрд╣ рдПрдХ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдлрд╝рд╛рдЗрд▓ рд╣реИ? рдФрд░ рдХреНрдпрд╛ рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рднрд╡рд┐рд╖реНрдп рдХреА рд╡рд╕реНрддреБ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрди рдЦреБрд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ?

рдЕрдиреБрд░реЛрдз рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдЦреЛрд▓рддрд╛ рд╣реИред рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ OpenSSL рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдмрдирд╛рдП рдирд╣реАрдВ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрдиреБрд░реЛрдз рднреА рдЦреБрд▓реЗрдЧрд╛, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ .netrc рдлрд╝рд╛рдЗрд▓, рд╣реЛрд╕реНрдЯреНрд╕ рдлрд╝рд╛рдЗрд▓, рдФрд░ рдХрдИ рдЕрдиреНрдпред

рдЖрдкрдХреЛ strace рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рдлрд╛рдЗрд▓реЗрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВред рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рдПрдХ рд╕рдЦреНрдд рд╕реВрдЪреА рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рддреЗрдЬреА рд╕реЗ рдЗрдирдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди, рд╣рд╛рдБ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ HTTPS рдкрд░ 1000 рдХрдиреЗрдХреНрд╢рди

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рднреА рд╕рдВрдШрд░реНрд╖ рдХрд┐рдпрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ OS X рдкрд░ opensnoop рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рднреА рд╕рдорд╛рди рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рднреА рдмрд╛рд░-рдмрд╛рд░ requests.post(url, data=data) рд╕реЗ HTTP (рди рдХрд┐ HTTPS) рд╕рд░реНрд╡рд░ рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдХреНрд╕рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБред Ubuntu 16.04.3, рдкрд╛рдпрдерди 3.5.2 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, 2.9.1 рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ

data рдХреНрдпрд╛ рд╣реИ?

рдХреБрдЫ рд╕реМ рдХреЗрдмреА рдкрд╛рда

рдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ?

рдирд╣реАрдВ, рдореИрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдХреНрд╡реЗрд░реА рдмрдирд╛рддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдХрдИ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ?

рдирд╣реАрдВ, рдПрдХрд▓ рдзрд╛рдЧрд╛, рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрд┐рдВрдЧ

рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдПрдлрдбреА рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИ: рд╣рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдПрдХ рд╣реА рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЖрдХреНрд░рд╛рдордХ рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рдХреНрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдкрд╛рдпрдерди 2.7, рдЕрдиреБрд░реЛрдз 2.18.4, urllib3 1.22ред
рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХреЛрдб (рдмрд╣реБ-рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ) рдЪрд▓рд╛рдирд╛ред рдПрдХ рд╕рдордп рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ 6 URL рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕рддреНрд░ рдмрдирд╛рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ред

рдореБрдЭреЗ Python 3.5 , requests==2.18.4 рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ

@mcobzarenco рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдк (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдмрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдврд╝рддреЗ рд╕рдордпред рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕реЙрдХреЗрдЯ CLOSE_WAIT рдореЗрдВ рдирд╣реАрдВ рд░рд╣реЗрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕