0

私はこの例に広く従うアプリケーションを書いています。

次のような POST リクエストを送信すると:

curl http://localhost:5000/todos -d "data=Remember the milk" -X POST

RethinkDB から次のエラーが表示されます。

rethinkdb/ast.py", line 118, in run return c._start(self, **global_optargs) AttributeError: 'function' object has no attribute '_start'

誰もこの種のものに遭遇したことがありますか?Python 3.5.0 と Flask 0.10.1 で RethinkDB 2.2.2 を使用しています。

ありがとう、

アーロ

4

2 に答える 2

0

これは、同様の問題https://github.com/rethinkdb/rethinkdb/issues/3211である可能性があります。

この行に例を示します。

inserted = r.table('todos').insert(request.json).run(g.rdb_conn)

JSON形式のデータが必要だと思うので、JOSN形式の辞書である場合はrequest.dataを確認する必要があります。また、JSON 形式のデータのプロパティは、Unicode ではなく utf8 でエンコードされた文字列にする必要があります。かどうかはわかりません

curl http://localhost:5000/todos -d "data=Remember the milk" -X POST

{data:"Remember the milk"} のような JSON 形式の本文を生成してサーバーに送信しますが、そこにロジックを追加して、クライアントからのデータが破損しておらず、正しいデータ スキーマに従っているかどうかを確認することをお勧めします。 . 何かのようなもの:

@app.route("/todos", methods=['POST'])
def new_todo():
    client_data = json.loads(request.data)
    object_to_be_inserted = {
       'property1': client_data['property1].encode('utf-8') if 'property1' in client_data else '',
       'property2': client_data['property2].encode('utf-8') if 'property2' in client_data else ''
    }
    inserted = r.table('todos').insert(object_to_be_inserted).run(g.rdb_conn)
    return jsonify(id=inserted['generated_keys'][0])
于 2016-01-02T18:27:25.230 に答える
0

コードに、気付かなかった単純なエラーがありましたr.connectr.connect()

于 2016-01-02T18:27:35.400 に答える