Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Consultores
Postado

Nos recomendamos por aqui, pois outros usuários ou outros consultores podem opinar sobre o assunto.
E aqui fica mais organizado.
A NFeLib funciona normalmente na API ou ela nao esta em API?
 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado

Segue um exemplo simples o que estou usando para teste o comportamento da lib multi thread. nesse exemplo é possível trocar entres a lib nfe e mdfe e ver o comportamento delas

https://gitlab.com/julio.novaes/exemploacbr

Para executar o exemplo basta ter o ambiente configurado e mudar o caminhos para lib no código.

O problema é quando executamos com mdfe ela quebra de forma intermitente

  • Consultores
Postado
2 minutos atrás, Dev Comercial disse:

Para executar o exemplo basta ter o ambiente configurado e mudar o caminhos para lib no código.

Vou testar amanha pela manha, qq te chamo p me ajudar !
Ja que não desenvolvo em Go

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado

Certo, mas olhando o código das duas libs é para o comportamento ser igual para as duas né ? Já que para esse método de versão é o acbrlibcomum que resolve.

  • Consultores
Postado
56 minutos atrás, Dev Comercial disse:

Certo, mas olhando o código das duas libs é para o comportamento ser igual para as duas n

Ai q esta quem informa o buffer é sua aplicacao.. nao domino o Go... acredito que ela inicie em um valor e vai calculando.
no bufferlen.. da nfe esta ok.
no da MDFe, alguma coisa esta trazendo este numero alto.
em mensagem anterior qdo fiz um teste, vc disse q com uma chamada funciona.. mas qdo tem varias nao.
entao algum ponto esta gerando este numero q esta estourando o buffer.
Pode testar fixando o buffer do mdfe limitando o buffer a um numero fixo, exemplo 256?

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Consultores
Postado

Criamos aqui uma API para poder testar o comportamento que esta acontecendo em seu ambiente.
Lembrando que não temos relatos semelhantes  de erro com a lib.
Fizemos testes com mais de 200 requisições e não tivemos o problema.
Vou anexar o log p vc ver o comportamento e como eu expliquei acima, ele retorna o buffer recebido pela aplicação.

image.png


image.png

Vou anexar o meu log

ACBrLibMDFe-20241001.log

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado

Bom dia pode me mandar esse código python para eu verificar a diferença para o meu. temos o mesmo problema aqui no c# que inclusive contribuirmos com vocês na atualização para dotnet 8.

O mais estranho que no nosso exemplo o problema não ocorre quando a lib é nfe.

  • Consultores
Postado
1 minuto atrás, Dev Comercial disse:

Bom dia pode me mandar esse código python para eu verificar a diferença para o meu

Claro que sim, ja ja vou subir para o svn e te aviso.
Se vc se desejar depois contribuir com exemplo simples Go, não temos nenhum ainda. será bem vindo.
Ja te aviso assim q subir.

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Consultores
Postado

Segue o link dos exemplos MDFe
https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Python/MDFe/
vc vai utilizar API_MDFeMT.py
crie dentro da pasta da sua aplicação ACBrLib\x64
Salve nela libacbrmdfe64.so (para linux) ou ACBrMDFe64.dll com as dependencias (libxml2 e openssl) (para Windows).
A pasta de Schemas q está em dependência, deixe na pasta da sua aplicação.
Exemplo:
Screenshot_430.png

para acessar a API localmente http://localhost:5000/versao
para acessar remotamente troque o localhost pelo ip da maquina q esta executando a API, lembrando de redirecionar a porta no modem para o servidor da API

É um exemplo básico, com a Lib Multthread. mas nas requisicoes não estou usando threads.. tah entrando na fila. dependendo de quantas requisicoes por seguindo por nao ter criado thread na consulta python pode dar erro de multas consultas por segundo ou Too Many Requests
 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado

Executei aqui seu código. Realmente com uma request  e um cliente por vez funciona.

Testamos com multiplas  request e clientes que é o que código go simula e nesse caso ocorre o erro.

Para realizar os teste em seu código usamos o programa apache ab. Segue o comando.

ab -n 10 -c 5 http://localhost:5000/versao

 

Obs: esse programa pode ser instalado com  apt install ab

Capturadetelade2024-10-0210-53-29.thumb.png.14d0568b426b300f6fe2f4420a0a5b00.png

ACBrLibMDFe-20241002.log

  • Membros Pro
Postado

Fizemos o teste substituindo a lib mdfe pela nfe no código python e na nfe não ocorre o erro. Um comportamento similar ao da aplicação go. O teste também foi feito com o mesmo comando ab

  • Consultores
Postado
23 minutos atrás, Dev Comercial disse:

Testamos com multiplas  request e clientes que é o que código go simula e nesse caso ocorre o err

isso pq esta em fila como comentei.. é um exemplo basico.
Para aceitar "n" requisicoes ao mesmo tempo precisa criar threads para cada requisicao ser idependente

1 minuto atrás, Dev Comercial disse:

Fizemos o teste substituindo a lib mdfe pela nfe no código python e na nfe não ocorre o erro. Um comportamento similar ao da aplicação go. O teste também foi feito com o mesmo comando ab

de qualquer forma vou testar aqui tbm e ver se identifico algo baseado nesta informacao.
Obrigado !

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado

Entendi. Mas como esse exemplo Python prova que a lib está funcionando corretamente em multithread? Porque o problema apresentado é nessa situação.

A questão não é usar um servidor. O exemplo desenvolvido em go não usa um servidor exatamente por isso. Ele foi construído com o mínimo de dependências possíveis para mostrar que é a lib em situação de multithread que está com problema.

Resumindo:

LibNFe:

* Funciona com multithread e multiplas requisições no golang

* Funciona com multithread e multiplas requisições no python mesmo sem nenhuma fila ou implementação explicita de threads

Não apresenta "segmentation error"

LibMDFe:

* Não funciona com multithread e multiplas requisições no golang

* Não funciona com multithread e multiplas requisições no python mesmo sem nenhuma fila ou implementação explicita de threads

Apresenta "segmentation error"

Logo se as duas aplicações tem o mesmo comportamento usando as mesmas duas libs, o problema não é a lib MDFe em si?

Implementar uma fila em uma aplicação python tornaria a aplicação single thread e não multi thread uma vez que seria necessário aguardar uma requisição terminar para ir para a outra.

  • Consultores
Postado

Como disse no post anterior, vou realizar o mesmo teste na NFe sem criar threads na requisisao p ver o comportamento e analisar as duas libs
 

10 minutos atrás, Daniel InfoCotidiano disse:

de qualquer forma vou testar aqui tbm e ver se identifico algo baseado nesta informacao.
Obrigado !

E te reporto .. pq ambas era p ter o mesmo comportamento.
Vou realizar os testes e verificar, te reporto em breve.

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Consultores
Postado
48 minutos atrás, Dev Comercial disse:

Bom dia. Tem algum progresso ?

Bom dia !
Estamos com parte do time trabalhando nesta análise e esta como prioridade.
Assim que concluído reporto aqui. Obrigado pela compreensão


 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • 2 semanas depois ...
  • Consultores
Postado
35 minutos atrás, Dev Comercial disse:

Bom dia. alguma novidade ?

temos um time trabalhando nesta tarefa com prioridade. Ainda não está concluida, teve um avanço mas nao foi concluida.
assim que sinalizada como concluida, volto p reportar para que vc possa testar e finalizarmos a TK

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • 2 semanas depois ...
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...