【发布时间】:2021-07-20 15:59:28
【问题描述】:
我将我的应用程序部署到 Heroku,它向我显示了关于“项目”的“keyError”。我的代码在本地运行得很好,但不会在 Heroku 上运行。有人知道我该如何解决吗? 非常感谢!
我的代码:
def getbooktitle():
if request.method == "POST":
file = request.files['image']
img = Image.open(file.stream)
booktitle = pytesseract.image_to_string(img)
api_key = "myapikey"
url = f"https://www.googleapis.com/books/v1/volumes?q={booktitle}&key={api_key}"
response = requests.get(url)
json_response = response.json()
volume_info = json_response['items'][0]['volumeInfo']
title = volume_info.get('title')
author = volume_info.get('authors')
imageslink = volume_info['imageLinks']
smallimage = imageslink['smallThumbnail']
return jsonify({"books": [{'title': title, 'author': author[0], 'imageLink': smallimage}]})
查看日志:
2021-07-20T15:50:16.826905+00:00 app[web.1]: [2021-07-20 15:50:16,823] ERROR in app: Exception on /getbook [POST]
2021-07-20T15:50:16.826914+00:00 app[web.1]: Traceback (most recent call last):
2021-07-20T15:50:16.826915+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/flask/app.py", line 2070, in wsgi_app
2021-07-20T15:50:16.826915+00:00 app[web.1]: response = self.full_dispatch_request()
2021-07-20T15:50:16.826917+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/flask/app.py", line 1515, in full_dispatch_request
2021-07-20T15:50:16.826917+00:00 app[web.1]: rv = self.handle_user_exception(e)
2021-07-20T15:50:16.826918+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/flask/app.py", line 1513, in full_dispatch_request
2021-07-20T15:50:16.826918+00:00 app[web.1]: rv = self.dispatch_request()
2021-07-20T15:50:16.826919+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/flask/app.py", line 1499, in dispatch_request
2021-07-20T15:50:16.826919+00:00 app[web.1]: return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
2021-07-20T15:50:16.826920+00:00 app[web.1]: File "/app/app.py", line 21, in getbooktitle
2021-07-20T15:50:16.826921+00:00 app[web.1]: volume_info = json_response["items"][0]["volumeInfo"]
2021-07-20T15:50:16.826922+00:00 app[web.1]: KeyError: 'items'
【问题讨论】:
-
这个问题与Flask或Heroku无关,它是一个更一般的Web开发或编程问题。线索在错误消息中——
json_response字典中没有关键的“项目”。原因可能是找不到书名或书名无效,或者您的 API 密钥错误。 -
@KarlSutt 谢谢卡尔!我正在使用的 API 密钥与我正在使用的相同,当我在本地测试应用程序时,它工作得非常好。我在谷歌云平台上仔细检查过,但都是一样的,没有限制。我还尝试了带有书名和我的 API 密钥的链接,它显示了“项目”。
-
您可以在访问密钥之前打印出响应以查看其中的内容以及是否有任何其他有用的线索。
标签: flask heroku google-api