Azure Cosmos DB:Gremlin API请求太大异常。如何重试呼叫
在我的Azure Cosmos数据库中,我的吞吐量为1000 RU/s,需要执行大约290个查询。我不断收到请求太大的异常 每个查询都有12个属性和1个分区键,但我仍然认为对于1000个RU/s,应该正确执行查询 我有一个胆小鬼Azure Cosmos DB:Gremlin API请求太大异常。如何重试呼叫,azure,azure-cosmosdb,gremlin,gremlin-server,azure-cosmosdb-gremlinapi,Azure,Azure Cosmosdb,Gremlin,Gremlin Server,Azure Cosmosdb Gremlinapi,在我的Azure Cosmos数据库中,我的吞吐量为1000 RU/s,需要执行大约290个查询。我不断收到请求太大的异常 每个查询都有12个属性和1个分区键,但我仍然认为对于1000个RU/s,应该正确执行查询 我有一个胆小鬼 public static GremlinClient GetGremlinClient() { var gremlinServer = new GremlinServer(Endpoint, Port, enableSsl: true,
public static GremlinClient GetGremlinClient()
{
var gremlinServer = new GremlinServer(Endpoint, Port, enableSsl: true,
username: "/dbs/" + Databasename + "/colls/" + Collectionname, password: Authkey);
var gremlinClient = new GremlinClient(gremlinServer, new GraphSON2Reader(), new GraphSON2Writer(),
GremlinClient.GraphSON2MimeType);
return gremlinClient;
}
示例查询。我只是想添加顶点
g、 addV('Experience')。属性('u test','dummy')。属性('someProperty','dummy')。属性('someProperty','dummy')。属性('someProperty','业务流程的文档
所有部门以及管理层的信息
为中型工业企业选择ERP系统;
角色:项目管理“)。属性(“someProperty”,
“2016”).property(“someProperty”、“Offen”).property(“someProperty”,
'Dummy').property('someProperty','EN').property('someProperty',
“行业”)。属性(“someProperty”,过程文档
整个公司对ERP系统进行了深入的选择。”)
for-each执行所有查询
foreach (string query in queries)
{
await gremlinClient.SubmitAsync<dynamic>(query);
}
foreach(查询中的字符串查询)
{
等待gremlinClient.SubmitAsync(查询);
}
我得到的错误
服务器错误:\r\n\nActivityId:2312f64f-b865-49cc-bb26-843d46313199\nCeptionType:RequestRateTooLargeException\nCeptionMessage:\r\n\tMessage:{“Errors\”:[“Request rate is large\”]}\r\n\tActivityId:157daf87-3238-4e1c-9a81-41bcd6d7c2e1,请求URI:/apps/413f848b-ce17-40fc-ad7f-14c0e21e9633/服务/29abd22a-4e74-48c1-aab3-b311be968829/分区/9e4cb405-4f74-4d7f-8d12-26e79b910143/副本/132142016542682221s/,请求统计:\r\n\tRequestStartTime:2019-10-24T09:27:38.2395067Z,请求结束时间:2019-10-24T09:27:38.2395067Z,尝试的区域数:1\r\n\t响应时间:2019-10-24T09:27:38.2395067Z
这是一个简单的代码,我不明白我能改变什么
是否有方法重试同一点的请求,或以某种方式不获取错误或避免错误您收到的异常是
request*Rate*TooLargeException
,这意味着您在短时间内提交了太多的请求
对于运行批量操作,您应该使用。您收到的异常是
请求*速率*工具argeException
,这意味着您在短时间内提交了太多请求
要运行批量操作,您应该使用。所以。。。你只是同时提交了几百个查询?您没有显示查询,也没有显示每个查询的成本,因此编写时很难猜测,但是。。。假设您同时处理所有这些查询(比如,在同一个1秒窗口内),那么每个查询平均需要花费29 RU。否则,您将受到限制(我假设这就是您所说的“请求太大”的意思)。根据边缘的导航方向,查询的成本可能会高得多。请考虑更详细地编辑您的问题。所有查询都在查询列表中,我尝试在Frach循环中单独执行每个查询。至少这是我的假设,对于每个,它将一次提交一个查询。这是一种提交查询的错误方法吗?我遵循MS Sample,他们也以类似的方式使用它,但其他查询中有什么?您可以在提交之前打印每个查询,以便知道是哪个查询导致了异常。另外,在问题中加入你得到的确切错误可能会有所帮助。所以。。。你只是同时提交了几百个查询?您没有显示查询,也没有显示每个查询的成本,因此编写时很难猜测,但是。。。假设您同时处理所有这些查询(比如,在同一个1秒窗口内),那么每个查询平均需要花费29 RU。否则,您将受到限制(我假设这就是您所说的“请求太大”的意思)。根据边缘的导航方向,查询的成本可能会高得多。请考虑更详细地编辑您的问题。所有查询都在查询列表中,我尝试在Frach循环中单独执行每个查询。至少这是我的假设,对于每个,它将一次提交一个查询。这是一种提交查询的错误方法吗?我遵循MS Sample,他们也以类似的方式使用它,但其他查询中有什么?您可以在提交之前打印每个查询,以便知道是哪个查询导致了异常。此外,在问题中添加您所遇到的确切错误可能会有所帮助。