Python / Google Maps API-TimeoutError:[Errno 60]从终端调用函数时操作超时

时间:2019-11-22 23:56:21

标签: python google-maps google-api

我正在从终端调用一个函数,该终端连接到Google Maps API以返回位置的坐标。

但是,我遇到此错误

sock.connect((self.host, self.port))
TimeoutError: [Errno 60] Operation timed out

过程如下:

>>>> python
>>>> from geocode import getGeocodeLocation
>>>> getGeocodeLocation("New York")

错误:

sock.connect((self.host, self.port))
TimeoutError: [Errno 60] Operation timed out

我正在使用的代码如下geocode.py-我认为这没问题,因为它以前运行良好。

import httplib2
import json

def getGeocodeLocation(inputString):
    # Use Google Maps to convert a location into Latitute/Longitute coordinates

    google_api_key = "my_api_key"
    locationString = inputString.replace(" ", "+")
    url = ('https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s'% (locationString, google_api_key))
    h = httplib2.Http()
    result = json.loads(h.request(url,'GET')[1])
    latitude = result['results'][0]['geometry']['location']['lat']
    longitude = result['results'][0]['geometry']['location']['lng']
    return (latitude,longitude)

任何想法可能有什么问题吗?

1 个答案:

答案 0 :(得分:1)

在RStudio Cloud上运行您的确切代码(使用我自己的密钥)时,我得到(40.7127753, -74.0059728)作为输出。因此,这可能是与API密钥有关,与环境有关或与网络有关的问题。

要缩小问题范围,我建议您在同一平台上尝试一下。这些是我设置的方式:

geocode.py

import httplib2
import json

def getGeocodeLocation(inputString):
    # Use Google Maps to convert a location into Latitute/Longitute coordinates

    google_api_key = "MY_API_KEY"
    locationString = inputString.replace(" ", "+")
    url = ('https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s'% (locationString, google_api_key))
    h = httplib2.Http()
    result = json.loads(h.request(url,'GET')[1])
    latitude = result['results'][0]['geometry']['location']['lat']
    longitude = result['results'][0]['geometry']['location']['lng']
    return (latitude,longitude)

main.py

from geocode import getGeocodeLocation
getGeocodeLocation("New York")

还要确保您的API密钥有效,并且您在项目中启用了计费和地理编码API。请参阅Google的get started guide

希望这对您有帮助!