0

在使用 Python、Flask、Heroku、Jquery 和 Google Books API编写一个小型 profect (日语)时,我在执行“検索”(意思是“搜索”)时收到 500 Internal Server Error。

当您在旁边的框中单击带有某些输入的“検索”时,它会向 Google Books API 发送请求,并通过带有 Jquery 的 Ajax 获取与该参数匹配的图书数据,如下所示。

@app.route("/_search_books")
def search_books():
   title = request.args.get('title')
   if title:
        title = title.encode('utf-8')
        url = 'https://www.googleapis.com/books/v1/volumes?q=' + title

        h = urlopen(url)
        data = json.load(h)

        books = []
        for i in range(len(data['items'])):
            try:
                title = data['items'][i]['volumeInfo']['title']
            except:
                title = None
            try:
                author = data['items'][i]['volumeInfo']['authors'][0]
            except:
                author = None
            try:
                publisher = data['items'][i]['volumeInfo']['publisher']
            except:
                publisher = None
            try:
                year = data['items'][i]['volumeInfo']['publishedDate']
            except:
                year = None
            try:
                thumbnail = data['items'][i]['volumeInfo']['imageLinks']['thumbnail']
            except:
                thumbnail = None
            try:
                page = data['items'][i]['volumeInfo']['pageCount']
            except:
                page = None
            books.append({'title': title, 'author': author, 'publisher': publisher, 'year': year, 'thumbnail': thumbnail, 'page': page})

        return jsonify(result=books)

它在开发中正常工作,所以我猜它是 Google Books API 的权限相关的东西或 SSL 相关的东西。

奇怪的是它并不总是返回 500,它有时会返回预期的结果。这似乎取决于我执行的时间,比如早上 200 和下午 500。

提前致谢 :)

4

2 回答 2

0

我有同样的问题。我的开发和生产没有区别;他们都只是偶尔返回 500。消息是“后端错误”。我不相信你可以做任何事情来解决这个问题;这似乎是谷歌的一个问题。我通常可以在几秒钟后再次重复相同的查询,它工作正常。

于 2013-11-05T22:09:41.067 回答
0

嘿,我实际上遇到了同样的问题,将请求量下限 maxResults=15 更改为它修复了问题的搜索字符串

于 2020-01-17T02:54:57.020 回答