0

Python、Flask、Heroku、Jquery、および Google Books API を使用して小さなプロジェクト(日本語)に取り組んでいるときに、「検索」を意味する「検索」の実行中に 500 内部サーバー エラーが発生しました。

横のボックスに入力して「検索」をクリックすると、次のように Google Books API にリクエストが送信され、その引数に一致する書籍データが Ajax w/ Jquery 経由で取得されます。

@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 を返します。メッセージは「バックエンド エラー」です。これを解決するためにできることは何もないと思います。Google側の問題のようです。通常、数秒後に同じクエリをもう一度繰り返すことができ、問題なく動作します。

于 2013-11-05T22:09:41.067 に答える