私はArangoに何千ものレコードをインポートしようとしています。私は、Arangoのバッチ/バルクインポート機能を使用して、https://docs.arangodb.com/3.0/HTTP/BatchRequest/index.htmlにPUTとPOSTリクエストを組み合わせて新しいレコードを挿入するか、既存のレコードがすでに存在する場合は更新するようにしています。私の最終的な解決策はPyArangoを使用してPythonスクリプトから実行する必要があります。私は、これはアランゴで正常に処理するために取得することができていないArangoDBへのバッチリクエストが失敗する
Content-Type: multipart/form-data; boundary=P1X7QNCB
Content-Length: <calculated by python or REST Client>
Authorization: Basic <calculated by python requests session or REST Client>
--P1X7QNCB
Content-type: application/x-arango-batchpart
Content-Id: 1
POST /_api/document/model/foo HTTP/1.1
{"data": "bar"}
--P1X7QNCB
:私は次のようになりますサンプルHTTPリクエスト
POST http://<arango_server>:8529/_db/myDB/_api/batch
を作成しました。
url = "/_api/document/" + collection + "/" + nodeKey + " HTTP/1.1"
postString = ("--P1X7QNCB\r\n"
"Content-type: application/x-arango-batchpart\r\n"
"Content-Id: " + str(counter) + "\r\n"
"\r\n"
"\r\n"
"PUT " + url+ "\r\n\r\n\r\n" + json.dumps(nodeData) + "\r\n")
batchHeaders = {"Content-Type": "multipart/form-data; boundary=P1X7QNCB"}
response = self.db.connection.session.post(self.db.URL + "/batch", data=postString, headers=batchHeaders)
と私は手動でコンテンツを投稿するRESTクライアントを使用して:私は(それはコードの私の近似は、以下のタイプミスがあっても、上記の要求を生成)次のようなのpythonを使用して試してみました。
{"error":true,"errorMessage":"invalid multipart message received","code":400,"errorNum":400}
そして次は、アランゴログファイルに記録されています:
WARNING received a corrupted multipart message
は私が間違っているの何誰にもそれは明らかである、またはどこ私ができる両方のケースでは、私は戻って、次の応答を取得しますなぜArangoDBがリクエストを拒否しているのかについて詳しく調べてみてください。
ありがとうございます!
ありがとうございました。私は最後の境界文字列に " - "を終えていませんでした。しかし、修正されたArangoはレスポンス200でマルチパートリクエストを受け付けますが、個々のマルチパートレスポンスは{"error":true、 "errorMessage": "'METHOD' not implemented" "code":501、 errorNum ":9}。 「バッチ」リクエストを有効にするために必要なことはありますか?私はLinux上でArangoDB 3.0.6を実行しています。 – muddlednbefuddled
更新:私はバッチポストを働かせました。私の2番目の問題は、マルチパートヘッダーとPOST/PUTコマンドの間の二重のスペースでした。 arangod multipartパーサーは1つのスペースを必要とするように見え、ヘッダーの後ろの2行目に 'METHOD'があることを期待しています。 – muddlednbefuddled