因此,我不确定要包含的代码可能会有所帮助,所以请告诉我并添加它。我有一个要在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开头,还是由于某种原因而无法解析响应。同样,所有这些在本地运行时都有效。
答案 0 :(得分:0)
问题是我将Yelp API密钥设置为本地计算机上的环境变量,而不是我的app.yaml,这就是为什么它在本地运行但在部署时无法运行的原因。