Update:httplib.HTTPSConnection тайм-аут при подключении к Amazon Web Services
Я был в состоянии сузить ниже:
>>> 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
Принимая во внимание:
>>> h1 = httplib.HTTPSConnection('google.com')
>>> h1.request ("GET", "/")
>>> r1 = h1.getresponse()
>>> print r1.status, r1.reason
301 Moved Permanently
Что это о AWS, который freaking httplib.HTTPSConnection?
(я знаю, что выше запрос не правильный и полный запрос AWS, но я упростил это просто, чтобы попытаться получить ответ от сервера.)
Первоначальный запрос:
Пожалуйста помочь отчаянному разработчику. Я выполнил все инструкции по установке и включению django-storage и boto в своем приложении для загрузки файлов на S3. (. Как это приложение предназначено для развертывания на Heroku, я использую virtualenv для управления зависимостями)
Для местного развития я положил все свои полномочия в ~/.bash_profile:
export AWS_ACCESS_KEY_ID=xxxx
export AWS_SECRET_ACCESS_KEY=yyyy
export S3_BUCKET_NAME=zzzz
Итак, большой, но тогда это:
> python manage.py shell
>>> import boto
>>> conn = boto.connect_s3()
>>> conn.get_all_buckets()
Производит эти отладочные сообщения и эту ошибку:
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
То, что я не понимаю, заключается в том, что использование ТОЧНЫХ ТОЧНЫХ ПОЛНОМОЧИЙ Я могу без проблем подключиться с помощью графического интерфейса на моем Mac для просмотра S3. Я могу перечислить все ведра. Я могу попасть в ведро zzzz. Я могу загрузить файл к нему. Я могу загрузить его снова. Я могу удалить его. Все хорошо. Но независимо от того, что я пробую через Boto, это время без комментариев.
Почему вы выбрали время в моей местной среде ?!
Вы когда-нибудь выясняли, почему это? Мне пришлось создать файл /etc/boto.cfg и поместить в него '[Boto] \ nis_secure = false', чтобы он работал. –