2016-04-14 31 views
1

我提出地址解析请求使用要求网上搜寻API:的Python:要求谷歌地图API - 握手问题

geo_url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + geo_address + '&key=' + GOOGLE_API_KEY 
geo_response = requests.get(url=geo_url, verify=False) 
geo = geo_response.json() 

在我CLOUD9 IDE它的工作原理semalessly。

在我的Ubuntu服务器与Apache和mod_wsgi的它工作的时候,但是经常失败,并在阿帕奇error.log中的错误:

File "/var/virtualenv/primo/lib/python2.7/site-packages/django/utils/log.py", line 129, in emit 
    self.send_mail(subject, message, fail_silently=True, html_message=html_message) 
    File "/var/virtualenv/primo/lib/python2.7/site-packages/django/utils/log.py", line 132, in send_mail 
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs) 
    File "/var/virtualenv/primo/lib/python2.7/site-packages/django/core/mail/__init__.py", line 98, in mail_admins 
    mail.send(fail_silently=fail_silently) 
    File "/var/virtualenv/primo/lib/python2.7/site-packages/django/core/mail/message.py", line 303, in send 
    return self.get_connection(fail_silently).send_messages([self]) 
    File "/var/virtualenv/primo/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 100, in send_messages 
    new_conn_created = self.open() 
    File "/var/virtualenv/primo/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 64, in open 
    self.connection.starttls(keyfile=self.ssl_keyfile, certfile=self.ssl_certfile) 
    File "/usr/lib/python2.7/smtplib.py", line 649, in starttls 
    self.sock = ssl.wrap_socket(self.sock, keyfile, certfile) 
    File "/usr/lib/python2.7/ssl.py", line 487, in wrap_socket 
    ciphers=ciphers) 
    File "/usr/lib/python2.7/ssl.py", line 243, in __init__ 
    self.do_handshake() 
    File "/usr/lib/python2.7/ssl.py", line 405, in do_handshake 
    self._sslobj.do_handshake() 
    error: [Errno 0] Error 

我不明白什么错误。请有人指出我正确的方向吗?

+0

您使用的是什么版本的请求? –

+0

请求== 2.5.3 – caliph

+1

现在最新版本是2.9.1,请尝试升级并查看问题是否仍然存在 –

回答

1

经过长时间的研究,我发现它在密码模块中存在一个bug。

参见:https://github.com/pyca/cryptography/issues/2299

替代方法:将WSGIApplicationGroup%{GLOBAL}

在apache的虚拟主机配置例如

<Directory /var/www/path/to/wsgi> 
    <Files wsgi.py> 
     Require all granted 
    </Files> 
    WSGIApplicationGroup %{GLOBAL} 
</Directory> 
+0

谢谢。也解决了我的问题 - https://stackoverflow.com/questions/43643674/google-maps-bad-handshake – HenryM