0

私はこの些細なファルコンアプリを持っています:

import falcon

class ThingsResource:
    def on_get(self, req, resq) :
        #"""Handels GET requests"""
        resp.status = falcon.HTTP_200
                resp.body = '{"message":"hello"}'


app = falcon.API()
things = ThingsResource()
app.add_route('/things', things)

この方法でgunicornを使用して実行しようとしています:

arif@ubuntu:~/dialer_api$ gunicorn things:app

しかし、これを接続しようとすると、次のようになりhttpieます。

arif@ubuntu:~$ http localhost:8000/things
HTTP/1.1 500 Internal Server Error
Connection: close
Content-Length: 141
Content-Type: text/html

<html>
  <head>
    <title>Internal Server Error</title>
  </head>
  <body>
    <h1><p>Internal Server Error</p></h1>

  </body>
</html>

これはとても些細なことですが、ここで何が問題なのかわかりませんか?

4

1 に答える 1

3

7行目は、インデントされるべきではないときにインデントされています。6 行目は、後で使用する resp ではなく、resq を参照します。つまり、 resp を参照する後の行は失敗します。

このような内部サーバー エラーが発生する場合は、多くの場合、コードの誤りが原因です。あなたの gunicorn プロセスはエラーを吐き出していたはずです。Python の規則 (インデントごとに 4 つのスペースなど) に適合することを確認するなど、コードの修正版を添付しました。オンライン python コード チェッカーのようなツールは、このようなコードの小さなスニペット、特に間隔の問題に役立ちます。

import falcon


class ThingsResource():
    def on_get(self, req, resp):
        resp.status = falcon.HTTP_200
        resp.body = '{"message":"hello"}'


app = falcon.API()
things = ThingsResource()
app.add_route('/things', things)

このコードを別のファイルに保存し、diff を実行して変更内容を確認してください。主な問題は、担当者と不適切なインデントでした。

于 2014-07-10T03:43:17.750 に答える