首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NET SDK TranslateAsync GetMetadata失败

NET SDK TranslateAsync GetMetadata失败
EN

Stack Overflow用户
提问于 2021-03-17 12:54:23
回答 1查看 27关注 0票数 1

我正在构建一个数据树(很像查看器模型树),但是我需要一次上传多个文件(部件和组件的混合)。当我创建这棵树的时候有2次。首先,当我的应用程序加载时,我循环遍历存储桶中的所有对象,并调用GetMetadataAsync来获取模型guid,然后调用GetModelviewMetadataAsync来获取层次结构,然后将层次结构传递给客户端

其代码是

代码语言:javascript
复制
        var oa = new OAuthController(_configuration);
        dynamic oauth = await oa.GetInternalAsync();
        DerivativesApi derivative = new DerivativesApi();
        derivative.Configuration.AccessToken = oauth.access_token;
        dynamic mDyn = await derivative.GetMetadataAsync(urn);
        string guid = "";
        foreach (KeyValuePair<string, dynamic> metadataItem in new DynamicDictionaryItems(mDyn.data.metadata))
        {
            guid = metadataItem.Value.guid;
        }

        dynamic hierarchy = await derivative.GetModelviewMetadataAsync(urn, guid);

当存储桶中已存在的项目调用此方法时,所有操作都会按预期进行:

代码语言:javascript
复制
urn = dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dW1rcnozZzV4bm15ZmNyNTY3Z3FtcXFoa3ltczRpMnMtZGVidWczLTEyMzQ1LzNtbSUyMGZvbGRlZC5pcHQ=
guid = 0162f7fd-df63-4dc2-bb9b-dd7cb8b493c2
hierarchy = {"data":{"type":"objects","objects":[{"objectid":1,"objects":[{"objectid":2,"objects":[{"objectid":3,"name":"Solid1"}],"name":"3mm folded"}],"name":"3mm folded"}]}}

当我向存储桶添加新文件并需要追加到我的数据树时,我的问题就出现了。加载后,我调用"TranslateAsync“并配置一个webhook,以便在翻译完成时通知我。在回调中,我获取了作业的urn,删除了webhook,然后尝试获取元数据(全部在服务器端)。这是我对上面相同的代码和相同的部分得到的结果

代码语言:javascript
复制
urn = dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dW1rcnozZzV4bm15ZmNyNTY3Z3FtcXFoa3ltczRpMnMtZGVidWczLTEyMzQ1LzNtbSUyMGZvbGRlZC5pcHQ=
guid = f7156859-17f8-4a63-9c1c-4db53e4e97fa
hierarchy = {"result":"success"}

请注意,urn是相同的,但guid与结果(层次结构)不同。

有没有人能帮我弄明白这是怎么回事。

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 16:48:54

首先,您没有做错任何事情:) 202响应是您可以调用此端点的预期响应之一,如此处所述。

因为属性数据库可能非常大,所以这个端点通常会返回202HTTP代码,告诉您服务器正在内存中加载sqlLite数据库。当您获得202响应时,这意味着您需要稍后再回来并再次询问。

响应202的正文示例

代码语言:javascript
复制
{
    "result": "success"
}

一旦加载了数据库,它就会在内存中停留一段时间,这取决于您在这些端点上进行的调用次数,然后服务器会从内存中丢弃该数据库(它至少会在内存中停留几分钟)。

重要的是要知道,您可以在第一次调用时使用forceget参数,以确保告诉服务器您想要加载数据库,即使它非常大。但只能使用该参数一次-它的速率限制为60rpm,而不存在时为数千(14000rpm)。这样一来,你就可以节省你的forceget=true配额,为将来的其他型号做准备。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66667188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档