1 - Sim, salvo todos os JSONs.

2 - Faço o reenvio somente dos que dão erro.

3 -  Não tinha reparado nesse ponto de retorno.

-- Já consegui resolver o problema, praticamente refiz toda a lógica de envio do Json, em vez de enviar ele inteiro, quebrei em 300 objetos por vez, tem muito mais envios, porém não quebrou. 

Desculpa a demora para responder, e muito obrigado pela atenção.

O Json é bem extenso, mais de 5 milhões de caracteres, vou colocar aqui em baixo a classe,

 

ClassMethod InserirFatura(pInput As %Library.AbstractStream, Output pOutput As %Stream.Object) As %Status

{

    Set tSC = $System.Status.OK()

    Set %response.ContentType="application/json"

    Try {

  

        Set tObjBody = {}.%FromJSON(%request.Content)

        If $IsObject(tObjBody) {

            Set tArrayFatura = tObjBody.fatura

            Set iterArrayFatura = tArrayFatura.%GetIterator()

            Set tContNovo = 0

            Set tContAlte = 0

            Set tContDupli = 0

           

            TSTART

       

            While iterArrayFatura.%GetNext(.key, .tObjFatura) {

                Set:(tObjFatura.modalidade = "ger. compartilhada-geradora") tUG = $ZCONVERT(tObjFatura.instalacao, "I")

                Set tFatura = ##Class(Onboarding.Modelo.BotCemig).%New()

                If tObjFatura."per_prox_saldo_exp" '= ""{

               

                    Set tMesProx = $PIECE(tObjFatura."per_prox_saldo_exp","/",2)

                    Set tAnoProx = $PIECE(tObjFatura."per_prox_saldo_exp","/",1)

                    Set tDataProx = "01/"_tMesProx_"/"_tAnoProx

                    Set tFatura."per_prox_saldo_exp" = $ZDATEH(tDataProx)

                }

           

                Set tMesPer = $PIECE(tObjFatura.periodo,"/",2)

                Set tAnoPer = $PIECE(tObjFatura.periodo,"/",1)

                Set tDataPer = "01/"_tMesPer_"/"_tAnoPer

                Set tFatura.periodo = $ZDATEH(tDataPer)

                Set tNumSemPorc = $PIECE(tObjFatura.quota,"%",1)

                Set tNumSemVirg = $REPLACE(tNumSemPorc,",",".")    

                Set tFatura.quota = tNumSemVirg

           

                Set tFatura."unidade_geradora" = tUG

                Set tFatura."posto_horario" = tObjFatura."posto_horario"

                Set tFatura."qtd_compensacao" = tObjFatura."qtd_compensacao"

                Set tFatura."qtd_consumo" = tObjFatura."qtd_consumo"

                Set tFatura."qtd_geracao" = tObjFatura."qtd_geracao"

                Set tFatura."qtd_geracao" = tObjFatura."qtd_geracao"

                Set tFatura."qtd_prox_saldo_exp" = tObjFatura."qtd_prox_saldo_exp"

                Set tFatura."qtd_recebimento" = tObjFatura."qtd_recebimento"

                Set tFatura."qtd_saldo_ant" = tObjFatura."qtd_saldo_ant"

                Set tFatura."qtd_saldo_atual" = tObjFatura."qtd_saldo_atual"

                Set tFatura."qtd_saldo_exp" = tObjFatura."qtd_saldo_exp"

                Set tFatura."qtd_transferencia" = tObjFatura."qtd_transferencia"

                Set tFatura.instalacao = $ZCONVERT(tObjFatura.instalacao, "I")

                Set tFatura.modalidade = tObjFatura.modalidade

                Set tRS = ##Class(Onboarding.Repositorio.ConsultaSQL).ConsultaFatura(tFatura.instalacao, tFatura.periodo, tFatura."posto_horario", .tSC)

                If $$$ISERR(tSC) {

                    Throw tSC

                }

                If tRS.%Next() = 0 {

                    Set tFatura."data_criacao" = $PIECE($HOROLOG,",",1)

                    Set tFatura.duplicidade = 1

                    Set tSC = tFatura.%Save()

                    If $$$ISERR(tSC) {

                        Throw tSC

                    }

                    Set tContNovo = tContNovo+1

                }Else{

           

                    Set tFaturaExi = ##Class(Onboarding.Modelo.BotCemig).%OpenId(tRS.ID, .tSC)

               

                    If $$$ISERR(tSC) {

                        Throw tSC

                    }

   

                    If ((tFaturaExi."data_alteracao" = $PIECE($HOROLOG,",",1)) || (tFaturaExi."data_criacao" = $PIECE($HOROLOG,",",1))) {

                        Set tFatura.duplicidade = 1

                        Set tFaturaExi.duplicidade = 2

                        Set tFaturaExi."data_alteracao" = $PIECE($HOROLOG,",",1)

                        Set tFatura."data_criacao" = $PIECE($HOROLOG,",",1)

                        Set tSC = tFatura.%Save()

                        Set tSC = tFaturaExi.%Save()

                        If $$$ISERR(tSC) {

                            Throw tSC

                        }

                        Set tContDupli = tContDupli+1

                    }Else {

                    Set tFaturaExi.modalidade = tFatura.modalidade

                    Set tFaturaExi."per_prox_saldo_exp" = tFatura."per_prox_saldo_exp"

                    Set tFaturaExi."qtd_compensacao" = tFatura."qtd_compensacao"

                    Set tFaturaExi."qtd_consumo" = tFatura."qtd_consumo"

                    Set tFaturaExi."qtd_geracao" = tFatura."qtd_geracao"

                    Set tFaturaExi."qtd_prox_saldo_exp" = tFatura."qtd_prox_saldo_exp"

                    Set tFaturaExi."qtd_recebimento" = tFatura."qtd_recebimento"

                    Set tFaturaExi."qtd_saldo_ant" = tFatura."qtd_saldo_ant"

                    Set tFaturaExi."qtd_saldo_atual" = tFatura."qtd_saldo_atual"

                    Set tFaturaExi."qtd_saldo_exp" = tFatura."qtd_saldo_exp"

                    Set tFaturaExi."qtd_transferencia" = tFatura."qtd_transferencia"

                    Set tFaturaExi.quota = tFatura.quota

                    Set tFaturaExi.duplicidade = 1

     

                    Set tFaturaExi."data_alteracao" = $PIECE($HOROLOG,",",1)

               

                    Set tSC = tFaturaExi.%Save()

                    If $$$ISERR(tSC) {

                        Throw tSC

                    }

                    Set tContAlte = tContAlte+1

                                           

                    }

               

                }

               

           

            }

            TCOMMIT

            Write {"retorno":"OK","tContNovo":(tContNovo),"tContAlte":(tContAlte),"tContDupli":(tContDupli)}.%ToJSON()

        } Else {

            Throw ##class(%Exception.General).%New("Entrada JSON inválida")

        }

    }Catch tException {

        TROLLBACK

        Do ..ReportHttpStatusCode(..#HTTP500INTERNALSERVERERROR)

        Set:'$$$ISERR(tSC) tSC = tException.AsStatus()

        Set tSC = $System.Status.GetErrorText(tSC)

       

    }

    Quit tSC

}

Olá Danusa, a versão é essa, Product version: IRIS 2022.1, $ZV: IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2022.1.2 (Build 574U), essa extensão utiliza o terminal na web, fora do VS, eu gostaria de rodar o terminar do IRIS, dentro do VsCode, mas fazendo novos testes hoje, descobri que para poder utilizar esse terminal integrado com o VS só na nova versão do IRIS.  

Alguns testes que estou realizando com o Python encontrei alguns problemas parecidos e algo que notei no seu código seria o uso do print como saída final, o print não lhe será útil para retornar para o Iris creio a substituição dele por um return será mais efetivo.

O seu print irá imprimir como uma lista tudo que foi insirido no array vendas, se for para tratar essa váriavel externamente creio que será nescessário algumas modificações, mas irá funcionar.