2

我正在尝试用 140k 个对象填充 Parse 中的数据类。因为我有 GeoPoints,所以无法通过 Web 界面导入。他们建议的 REST API 不允许您通过一次 API 调用创建多个对象。所以,看起来我将进行 140k API 调用。

现在,我有一个包含 140k 行格式正确的 JSON 的文件,等待导入 Parse。

我已经尝试在我的网络服务器上使用 PHP 中的 curl 来执行此操作。在脚本停止运行之前,我导入了 5-10k 个对象。我尝试将其添加到 PHP 文件中-

ignore_user_abort(true);
set_time_limit(0);

但这没有用。所以我想也许我会在 Javascript 中有更多的控制权,在崩溃之前再次导入 5-10k 个对象。我每 50 个对象添加一个超时暂停,但它仍然崩溃。我尝试在进行下一个 API 调用之前等待成功响应,或者同时运行它们,但这并没有什么不同。

无论如何,我的问题是如何最有效地进行 140k REST API 调用,而不会崩溃。

4

2 回答 2

2

您可以使用 Parse 的 JSON 导入器(而不是 CSV)导入地理点。有关详细信息,请参阅导入数据

于 2013-02-22T19:19:06.663 回答
1

即使您可以使用 JSON 导入器导入复杂的布局,该导入器在处理大文件时也会遇到一些问题

您可以在一次调用中创建多个对象。使用/1/batch,请参见下面的示例用法;

{
    "requests": [{
        "method": "POST",
        "path": "/1/classes/YOURCLASS",
        "body": {
            "your": "parameters",
            "live": "here"
        }
    }, {
        "method": "POST",
        "path": "/1/classes/YOURCLASS",
        "body": {
            "second": "request",
            "parameters": "here"
        }
    }]
}

我已经成功地导入了大约 10k 行,没有任何问题,我确实通过终端运行了它,但是使用了 PHP 和 cURL,这是 cURL 调用以供参考;

$headers = array(
    'X-Parse-Application-Id: APPID',
    'X-Parse-REST-API-Key: RESTKEY',
    'Content-type: application/json'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.parse.com/1/batch');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ret = curl_exec($ch);

CURLOPT_RETURNTRANSFER如果您对一切顺利与否不感兴趣,则没有必要,也就是“一劳永逸”。

祝你好运!

于 2013-02-25T07:38:55.343 回答