在GCP上部署后无法远程连接到Postgres db

时间:2020-06-24 04:39:46

标签: django postgresql google-cloud-platform

因此,我不确定要包含的代码可能会有所帮助,所以请告诉我并添加它。我有一个要在Google Cloud Platform上部署的Django Web应用程序。该应用程序让您搜索邮政编码,然后调用Yelp API,将返回的内容添加到数据库中,然后从数据库中提取内容以显示在模板中。当在SQLite数据库中本地运行时,这非常理想。我已经创建了一个Postgres数据库,并且似乎也可以通过cloud_sql_proxy在本地运行。

问题在于,部署后它将仅搜索数据库中已有的内容,而无法添加到数据库中。如果搜索数据库中尚未存在的邮政编码,则会返回500服务器错误。您可以HERE自己尝试。邮政编码78626和55075可以工作,因为这是我在本地运行时对其进行测试的结果。如果我在本地运行并执行另一个zip,然后进行部署,则该zip会突然生效。

请让我知道我是否可以提供更多背景信息。

编辑:当我在DEBUG模式下部署和运行时,在调用Yelp API时会返回KeyError。

yelp_api.py

YELP_API_KEY = os.environ.get('YELP_API_KEY')

def get_name(location):
    """ makes call to Yelp API and returns list of establishments within the given zip code """
    
    url = 'https://api.yelp.com/v3/businesses/search'
    params = {
        'location': f'{location}',
        'limit': 50
    }
    
    headers = {'Authorization': f'Bearer {YELP_API_KEY}'}

    try:
        response = requests.get(url, params=params, headers=headers).json()
        for venue in response['businesses']:

etc. etc.

尤其是在for venue in response['businesses']行。它说Exception Value: 'businesses'。不知道这是否意味着它不是以调用API开头,还是由于某种原因而无法解析响应。同样,所有这些在本地运行时都有效。

1 个答案:

答案 0 :(得分:0)

问题是我将Yelp API密钥设置为本地计算机上的环境变量,而不是我的app.yaml,这就是为什么它在本地运行但在部署时无法运行的原因。