是否可以禁用Azure CosmosDB存储过程的5秒时间限制

是否可以禁用Azure CosmosDB存储过程的5秒时间限制,azure,azure-cosmosdb,Azure,Azure Cosmosdb,我最近一直在使用Azure的CosmosDB中的存储过程来更新一些文档。文档有点粗(5000多行文档,处理1000行左右),存储过程需要5秒以上的时间运行。5秒的限制将停止存储过程的运行,并抛出“超出时间限制”错误。所以,我想问的是,这是否可以关闭或配置 我已经阅读了一些可能的解决方法,我正在研究这些方法以及其他一些想法,但是,要明确的是,这个问题的目的是确定是否可以关闭或配置这5秒的限制,而不是我是否可以解决它 我一直试图在官方文件中找到这样的地方,所以如果有人知道在哪里,那就太好了 我还尝试

我最近一直在使用Azure的CosmosDB中的存储过程来更新一些文档。文档有点粗(5000多行文档,处理1000行左右),存储过程需要5秒以上的时间运行。5秒的限制将停止存储过程的运行,并抛出“超出时间限制”错误。所以,我想问的是,这是否可以关闭或配置

我已经阅读了一些可能的解决方法,我正在研究这些方法以及其他一些想法,但是,要明确的是,这个问题的目的是确定是否可以关闭或配置这5秒的限制,而不是我是否可以解决它

我一直试图在官方文件中找到这样的地方,所以如果有人知道在哪里,那就太好了

我还尝试增加集合的吞吐量,以减少运行所需的时间。这很有帮助,但存储过程仍然达到了极限

所以,我想问的是,这是否可以关闭或配置

显然,正如@David Makogon所说,不能关闭或配置cosmos db存储过程运行时的限制

因此,我建议您在线程中采用变通方法:。请使用以批处理数据。您可以参考下面的
伪代码

function updateArticlesDetailsX() {

       var collection = getContext().getCollection();
       var collectionLink = collection.getSelfLink();
       var response = getContext().getResponse();
       var docCount = 0;
       var counter = 0;

       tryQueryAndUpdate();

       function tryQueryAndUpdate(continuation) {
            var query = {
                query: "select * from root r"
            };

            var requestOptions = {
                continuation: continuation
            };

            var isAccepted =
                collection
                .queryDocuments(collectionLink,
                                query,
                                requestOptions,
                                function queryCallback(err, documents, responseOptions) {
                                         if (err) throw err;
                                         if (documents.length > 0) {
                                            // If at least one document is found, update it.
                                            docCount = documents.length;
                                            for (var i=0; i<docCount; i++){
                                                tryUpdate(documents[i]);
                                            }
                                            response.setBody("Updated " + docCount + " documents");
                                          }
                                          else if (responseOptions.continuation) {
                                              // Else if the query came back empty, but with a continuation token; 
                                              // repeat the query w/ the token.
                                            tryQueryAndUpdate(responseOptions.continuation);
                                          } else {
                                                 throw new Error("Document not found.");
                                                 }
                                });

            if (!isAccepted) {
                throw new Error("The stored procedure timed out");
            }
        }

        function tryUpdate(document) {
            //Optimistic concurrency control via HTTP ETag.
            var requestOptions = { etag: document._etag };

            //Update statement goes here:
            document.x = "some new value";

            var isAccepted = collection
                             .replaceDocument(document._self,
                                              document,
                                              requestOptions,
                                              function replaceCallback(err, updatedDocument, responseOptions) {
                                                       if (err) throw err;
                                                       counter++;
                                               });

            // If we hit execution bounds - throw an exception.
            if (!isAccepted) {
                throw new Error("The stored procedure timed out");
            }
        }
    }
函数updateArticlesDetailsX(){
var collection=getContext().getCollection();
var collectionLink=collection.getSelfLink();
var response=getContext().getResponse();
var-docCount=0;
var计数器=0;
tryQueryAndUpdate();
函数tryQueryAndUpdate(续){
变量查询={
查询:“从根r中选择*
};
var请求选项={
续:续
};
var被接受=
收集
.queryDocuments(collectionLink,
查询
请求选项,
函数queryCallback(错误、文档、响应选项){
如果(错误)抛出错误;
如果(documents.length>0){
//如果至少找到一个文档,请更新它。
docCount=documents.length;

对于(var i=0;它是不可配置的。除了RU配置之外,您唯一可以更改的是您的数据模型。或者可能是您的存储过程,以找到优化。感谢您的快速响应。我想您不知道这是否会在任何时候发生更改?我不知道,但无论如何这都不是可以讨论的(路线图)。感谢您的回复。正如我在OP中所说,我正在寻找一些替代方案,并将在这里查看您的示例。我想要的是一个确定的是或否,我得到:)