업데이트 :httplib.HTTPSConnection 타임 아웃을 연결할 때
이>>> h1 = httplib.HTTPSConnection('google.com')
>>> h1.request ("GET", "/")
>>> r1 = h1.getresponse()
>>> print r1.status, r1.reason
301 Moved Permanently
무엇입니까 :
>>> import httplib
>>> h1 = httplib.HTTPSConnection('s3.amazonaws.com')
>>> h1.request ("GET", "/")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 958, in request
self._send_request(method, url, body, headers)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 992, in _send_request
self.endheaders(body)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 954, in endheaders
self._send_output(message_body)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 814, in _send_output
self.send(msg)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 776, in send
self.connect()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1161, in connect
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 382, in wrap_socket
ciphers=ciphers)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 143, in __init__
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 306, in do_handshake
self._sslobj.do_handshake()
error: [Errno 60] Operation timed out
반면 : 나는 아래에 좁힐 수 있었다
httplib.HTTPSConnection을 놀라게하고있는 AWS에 대해?
(I 위의 요청이 정확하고 완전한 AWS 요청 아니라는 것을 알고,하지만 난 그냥 서버에서 응답을 얻으려고 단순화.)
원래 요청 :
하세요 절망적 인 개발자를 돕는다. 설치 및 django-storages 및 내 애플 리케이션에서 boto S3에 파일을 업로드 할 수 있도록 모든 지시를 따랐습니다. (.이 응용 프로그램에게 Heroku에 배포하기위한 것입니다, 나는이 종속성을 관리 할 수 VIRTUALENV 사용하고 있습니다) 지역 개발을위한
내가 ~/.bash_profile에있는 모든 내 자격 증명을 넣어했습니다
그래서export AWS_ACCESS_KEY_ID=xxxx
export AWS_SECRET_ACCESS_KEY=yyyy
export S3_BUCKET_NAME=zzzz
, 큰,하지만이 :
2012-06-04 23:17:34,432 [DEBUG] boto: path=/
2012-06-04 23:17:34,432 [DEBUG] boto: auth_path=/
2012-06-04 23:17:34,433 [DEBUG] boto: Method: GET
2012-06-04 23:17:34,433 [DEBUG] boto: Path:/
2012-06-04 23:17:34,433 [DEBUG] boto: Data:
2012-06-04 23:17:34,433 [DEBUG] boto: Headers: {}
2012-06-04 23:17:34,433 [DEBUG] boto: Host: s3.amazonaws.com
2012-06-04 23:17:34,433 [DEBUG] boto: establishing HTTPS connection: host=s3.amazonaws.com, kwargs={'timeout': 2}
2012-06-04 23:17:34,433 [DEBUG] boto: Token: None
2012-06-04 23:17:34,436 [DEBUG] boto: StringToSign:
GET
Tue, 05 Jun 2012 03:17:34 GMT
2012-06-04 23:17:36,900 [DEBUG] boto: encountered SSLError exception, reconnecting
2012-06-04 23:17:36,901 [DEBUG] boto: establishing HTTPS connection: host=s3.amazonaws.com, kwargs={'timeout': 2}
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "../venv/lib/python2.7/site-packages/boto/s3/connection.py", line 346, in get_all_buckets
response = self.make_request('GET', headers=headers)
File "../venv/lib/python2.7/site-packages/boto/s3/connection.py", line 454, in make_request
override_num_retries=override_num_retries)
File "../venv/lib/python2.7/site-packages/boto/connection.py", line 838, in make_request
return self._mexe(http_request, sender, override_num_retries)
File "../venv/lib/python2.7/site-packages/boto/connection.py", line 803, in _mexe
raise e
SSLError: _ssl.c:484: The handshake operation timed out
,536,913,632 :
> python manage.py shell
>>> import boto
>>> conn = boto.connect_s3()
>>> conn.get_all_buckets()
다음 디버깅 메시지와이 오류를 생성 10
내가 이해할 수없는 것은 동일한 신임을 사용하여 내 Mac에서 GUI를 사용하여 S3을 탐색해도 문제없이 연결할 수 있다는 것입니다. 모든 양동이를 나열 할 수 있습니다. 버킷 zzzz에 들어갈 수 있습니다. 파일을 업로드 할 수 있습니다. 다시 다운로드 할 수 있습니다. 나는 그것을 삭제할 수있다. 모든 것이 잘됩니다. 그러나 내가 Boto를 통해 무엇을 시도하든 아무런 설명없이 시간이 지납니다. 왜 BOTO 타이밍은 내 로컬 환경에서
밖으로! 디버그 출력이 라인을 바탕으로
이것이 왜 있는지를 알아 냈습니까? 나는 /etc/boto.cfg 파일을 만들고 그것을 작동시키기 위해'[Boto] \ nis_secure = false' 파일을 넣어야했습니다. –