Requests: SSLError: ν”„λ‘œν† μ½œ μœ„λ°˜μœΌλ‘œ EOFκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€(_ssl.c:590).

에 λ§Œλ“  2016λ…„ 07μ›” 09일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: psf/requests

Python 및 github에 λŒ€ν•΄ μ „λ°˜μ μœΌλ‘œ 처음 μ ‘ν•˜λŠ” μ €λ₯Ό 이해해 μ£Όμ‹­μ‹œμ˜€.

Play μŠ€ν† μ–΄μ—μ„œ 데이터λ₯Ό μŠ€ν¬λž©ν•˜λŠ” μš”μ²­μ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ§Žμ€ μ–‘μ˜ μš”μ²­(μ•½ 20k)을 ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ•½ 3000-4000 μš”μ²­μ— λŒ€ν•΄ ν›Œλ₯­ν•˜κ²Œ μž‘λ™ν•˜μ§€λ§Œ κ·Έ μ΄ν›„μ—λŠ” μ€‘λ‹¨λ©λ‹ˆλ‹€(SSL 였λ₯˜). SSL 및 μš”μ²­μ— μ΅μˆ™ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 원인을 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

였λ₯˜:

(SSLError                                  Traceback (most recent call last)
<ipython-input-23-1da544640d89> in <module>()
     53         time.sleep(0.1)
     54 
---> 55         r = requests.get('https://play.google.com' + link + '&hl=en')
     56         link_tree = html.fromstring(r.content)
     57         description = link_tree.xpath('//div[@jsname="C4s9Ed"]/text()') + link_tree.xpath('//div[@jsname="C4s9Ed"]/p/text()')

C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\api.pyc in get(url, params, **kwargs)
     65 
     66     kwargs.setdefault('allow_redirects', True)
---> 67     return request('get', url, params=params, **kwargs)
     68 
     69 

C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\api.pyc in request(method, url, **kwargs)
     51     # cases, and look like a memory leak in others.
     52     with sessions.Session() as session:
---> 53         return session.request(method=method, url=url, **kwargs)
     54 
     55 

C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    466         }
    467         send_kwargs.update(settings)
--> 468         resp = self.send(prep, **send_kwargs)
    469 
    470         return resp

C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\sessions.pyc in send(self, request, **kwargs)
    574 
    575         # Send the request
--> 576         r = adapter.send(request, **kwargs)
    577 
    578         # Total elapsed time of the request (approximately)

C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
    445         except (_SSLError, _HTTPError) as e:
    446             if isinstance(e, _SSLError):
--> 447                 raise SSLError(e, request=request)
    448             elif isinstance(e, ReadTimeoutError):
    449                 raise ReadTimeout(e, request=request)

SSLError: EOF occurred in violation of protocol (_ssl.c:590) )

이 github의-efiλŠ”μ΄ μŠ€λ ˆλ“œμ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. https://github.com/kennethreitz/requests/issues/3006 (μ•„λž˜ μ°Έμ‘°, κ·ΈλŠ” OPκ°€ μ•„λ‹˜) 찾을 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. μΆ”κ°€ 지원을 μœ„ν•΄ μ—΄λ¦° μŠ€λ ˆλ“œμž…λ‹ˆλ‹€. μ €λŠ” 파이썬 2.7을 μ‚¬μš©ν•©λ‹ˆλ‹€. λ˜ν•œ.

λ‚˜λŠ” κ½€ μ˜€λž«λ™μ•ˆ 이것에 κ°‡ν˜€ μžˆμ—ˆκ³  μ—¬κΈ°μ—μ„œλ„ StackOverflow도 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. .

도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λΆˆλΆ„λͺ…ν•œ 뢀뢄이 있으면 μ£„μ†‘ν•©λ‹ˆλ‹€. μ•Œλ €μ£Όμ„Έμš”.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ •ν™•νžˆ 같은 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” ndg-httpsclientκ°€ μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

https://github.com/kennethreitz/requests/issues/3605

λͺ¨λ“  6 λŒ“κΈ€

λ§‰ν˜”λ‹€κ³  λ§ν•˜λ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ 후속 μš”μ²­μ΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ? μΌμ‹œμ μΈ λ„€νŠΈμ›Œν¬ 였λ₯˜κ°€ _do_ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— λ¬»μŠ΅λ‹ˆλ‹€. λ§Žμ€ 수의 μ›Ή μš”μ²­μ„ μˆ˜ν–‰ν•˜λŠ” 경우 μ΄λŸ¬ν•œ μš”μ²­μ— μ§λ©΄ν•˜μ—¬ μΌμ’…μ˜ μž¬μ‹œλ„ 논리 κ΅¬ν˜„μ„ κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€. 후속 μš”μ²­μ΄ μž‘λ™ν•˜λŠ” 것 κ°™μ§€λ§Œ 아직 μž¬μ‹œλ„λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ„œλ²„λ‚˜ 무엇인가에 λ„ˆλ¬΄ λ§Žμ€ μš”μ²­μ„ ν•˜λŠ” κ·œμΉ™μ— μ–΄κΈ‹λ‚˜λŠ” 것이 μ•„λ‹Œκ°€ ν•˜λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” ν™•μ‹€νžˆ 그것을 μ‹œλ„ν•˜κ³  이 μŠ€λ ˆλ“œλ₯Ό μ—…λ°μ΄νŠΈν•  κ²ƒμž…λ‹ˆλ‹€. 감사 ν•΄μš”!

requests.* λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— κ°€μΉ˜ μžˆλŠ” μΌμ΄λ―€λ‘œ μ‚¬μš©μžμ™€ μ„œλ²„ κ°„μ˜ λ„€νŠΈμ›Œν¬ λ¦¬μ†ŒμŠ€μ— κ³ΌλΆ€ν•˜κ°€ 걸릴 μœ„ν—˜μ΄ 더 μ»€μ§‘λ‹ˆλ‹€. μ„Έμ…˜μ„ μ‚¬μš©ν•΄ λ³΄μ‹­μ‹œμ˜€.

이 λ¬Έμ œκ°€ μžˆλŠ” μ‚¬λžŒμ˜ 경우:

@Lukasa 의 μ œμ•ˆμ— 따라 μˆ˜μ •ν•˜κ³  μš”μ²­μ„ κ°€μ Έμ˜¨ 직후에 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

import requests
sess = requests.Session()
adapter = requests.adapters.HTTPAdapter(max_retries = 20)
sess.mount('http://', adapter)

그런 λ‹€μŒ 이전에 requests.get() λ₯Ό μ‚¬μš©ν•˜λ˜ κ³³μ—μ„œ sess.get() .

이것이 도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€. 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€

μ •ν™•νžˆ 같은 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” ndg-httpsclientκ°€ μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

https://github.com/kennethreitz/requests/issues/3605

@variable ndg-httpsclientλ₯Ό μ„€μΉ˜ν–ˆμ§€λ§Œ λ™μΌν•œ 였λ₯˜:urllib.error.URLError :

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰