Ir para conteúdo
  • Cadastre-se

dev botao

Erro: Timeout durante a comunicação com o SAT ao enviar requisição


Ver Solução Respondido por MARIA SILVIA DOS SANTOS,
  • Este tópico foi criado há 880 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal, estou desenvolvendo um Servidor SAT utizando Delphi 10.3 com os componentes do ACBRSat

Se eu enviar a venda ao SAT e após alguns minutos outra venda o EnviarDadosVenda envia e retorna as confirmações e os dados de CFe certinho, porém se eu enviar duas vendas em sequencia, a segunda venda retorna: Timeout durante a comunicação com o SAT.

Se em sequencia eu mandar uma venda sozinha o ACBr vai normalmente, o problema é quando manda várias requisições em sequencia. 
Já tentei adicionar um Timer ao final do envio para que o Sat possa ser descarregado mas nao adiantou.
 
Alguém já passou por uma situação dessas e pode me ajudar?
 
Obrigada
  • Moderadores
Postado
39 minutos atrás, MARIA SILVIA DOS SANTOS disse:

Pessoal, estou desenvolvendo um Servidor SAT utizando Delphi 10.3 com os componentes do ACBRSat

Se eu enviar a venda ao SAT e após alguns minutos outra venda o EnviarDadosVenda envia e retorna as confirmações e os dados de CFe certinho, porém se eu enviar duas vendas em sequencia, a segunda venda retorna: Timeout durante a comunicação com o SAT.

Se em sequencia eu mandar uma venda sozinha o ACBr vai normalmente, o problema é quando manda várias requisições em sequencia. 
Já tentei adicionar um Timer ao final do envio para que o Sat possa ser descarregado mas nao adiantou.
 
Alguém já passou por uma situação dessas e pode me ajudar?
 
Obrigada

Isso ocorre com o exemplo?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Oi Juliomar, Obrigada por responder tao rapidamente... 

Então.. no Exemplo não ocorre esse erro... o Exemplo aceita varias requisições seguidas... ja mandei 8 em sequencia e ele nao dá timeout. 

Só o meu aplicativo que esta retornando este erro, mas, aparentemente, estou enviando igual ao exemplo. Não sei o que posso estar esquecendo ou fazendo errado.

  • Moderadores
Postado
1 hora atrás, MARIA SILVIA DOS SANTOS disse:

Oi Juliomar, Obrigada por responder tao rapidamente... 

Então.. no Exemplo não ocorre esse erro... o Exemplo aceita varias requisições seguidas... ja mandei 8 em sequencia e ele nao dá timeout. 

Só o meu aplicativo que esta retornando este erro, mas, aparentemente, estou enviando igual ao exemplo. Não sei o que posso estar esquecendo ou fazendo errado.

então agora tem algo pra partir. deve olhar o exemplo e ver o que mais tu tem de diferente.

mas sim está com algo de diferente

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)

Uma prática que usamos aqui e reduz bem os problemas é sempre consultar o status do aparelho SAT antes de enviar uma venda.

Diariamente temos problemas com:
- aparelhos não sendo encontrado pelo windows (problema de comunicação)

- aparelho com com status "Em processamento"

- aparelho bloqueado por falta de internet

Todos esses casos avisamos na tela do PDV o problema, e não enviamos a venda.

Editado por William F. L.
image.png.7b12b65221605b4e2ee1b0693683f18d.png

Sistemas para Bares, Restaurantes e Varejo

https://www.wllsistemas.com.br

 

Postado

Então Willian, estas situações já são tratadas pelo sistema PDV, no meu caso ao enviando a venda uma a uma eu não tenho problemas, meu problema é quando envio mais de uma venda simultâneas.

Como é um ServidorSAT-Json/Rest, o sistema fica aberto e os caixas ficam mandando a venda via API (tenho lojas de cosméticos com 10 caixas enviando vendas)

Aparentemente, o problema esta na DLL, o fato de carregar ela no AjustaACBRSAT antes do acbrEnviaVenda, quando a venda é enviada dá o erro pq a DLL ja esta carregada. Para corrigir carrego a DLL qdo abre o servidorSat e nao carrego mais no AjustaACBRSAT.

Melhorou, mas não solucionou o problema. Agora o Erro esta intermitente, tipo envio várias vendas de caixas diferentes sem problemas (Ex, 6 vendas) ai em uma venda aleatória ele apresenta o erro (ex. a 7a venda)

No ACBRSatTeste tb ocorreu o mesmo problema. Se eu abro o um unico sistema e envio várias vendas é como se ele entrasse em fila e blz todas as vendas são enviadas corretamente, mas quando eu abro dois sistemas e mandei duas requisições simultâneas ao SAT, este retorna Timeout durante a comunicação com o SAT 

Postado (editado)

Nós também temos aqui um "mini" servidor de SAT, mas é bem mais simples rsrs ..

Aqui deixamos rodando no servidor um programa que fica rodando em loop e verificando a fila de Cupons pendentes, se ele acha um Cupom ai parte para verificar a tabela de SATs cadastrados e vai verificando o status de cada um (nesse ponto descarregamos e carregamos novamente a DLL), o aparelho SAT que estiver livre recebe o cupom.

Alguns colegas relataram em posts aqui mesmo no ACBr, que aparelhos SAT da mesma marca podem ter dificuldades em ter mais de 1 aparelho no mesmo computador, nesse caso sempre orientamos para ter aparelhos de marcas diferentes, nosso cliente usa 1 ControlId e 1 Linker II.

Um ponto interessante é, cada autorização que um aparelho executa, incremento no registro dele +1, sendo assim ordeno a fila de aparelhos sempre pelo aparelho que tem trabalhado menos .. rsrs

Temos isso em produção com no máximo 5 PDVs, em laboratório testamos com 3 PDVs finalizando a venda no mesmo segundo e até o momento nada consta de erros.

Editado por William F. L.
image.png.7b12b65221605b4e2ee1b0693683f18d.png

Sistemas para Bares, Restaurantes e Varejo

https://www.wllsistemas.com.br

 

  • Consultores
Postado
6 horas atrás, MARIA SILVIA DOS SANTOS disse:

Como é um ServidorSAT-Json/Rest, o sistema fica aberto e os caixas ficam mandando a venda via API (tenho lojas de cosméticos com 10 caixas enviando vendas)

Provavelmente o problema é que seu servidor, recebendo duas requisições ao mesmo tempo, tenta comunicar novamente com o Sat enquanto a anterior não finalizou ainda.

6 horas atrás, MARIA SILVIA DOS SANTOS disse:

Se eu abro o um unico sistema e envio várias vendas é como se ele entrasse em fila e blz

Seu único sistema só envia uma nova quando a anterior foi finalizada, com isso não gera o problema.

Caso seja possível, você precisaria criar um controle de fila de processamento, para só processar uma nova quando a última for finalizada.

Uma sugestão de teste é colocar um timeout grande e verificar se passa quando a solicitação anterior finalizou.

  • Moderadores
Postado
8 horas atrás, MARIA SILVIA DOS SANTOS disse:

Então Willian, estas situações já são tratadas pelo sistema PDV, no meu caso ao enviando a venda uma a uma eu não tenho problemas, meu problema é quando envio mais de uma venda simultâneas.

Como é um ServidorSAT-Json/Rest, o sistema fica aberto e os caixas ficam mandando a venda via API (tenho lojas de cosméticos com 10 caixas enviando vendas)

Aparentemente, o problema esta na DLL, o fato de carregar ela no AjustaACBRSAT antes do acbrEnviaVenda, quando a venda é enviada dá o erro pq a DLL ja esta carregada. Para corrigir carrego a DLL qdo abre o servidorSat e nao carrego mais no AjustaACBRSAT.

Melhorou, mas não solucionou o problema. Agora o Erro esta intermitente, tipo envio várias vendas de caixas diferentes sem problemas (Ex, 6 vendas) ai em uma venda aleatória ele apresenta o erro (ex. a 7a venda)

No ACBRSatTeste tb ocorreu o mesmo problema. Se eu abro o um unico sistema e envio várias vendas é como se ele entrasse em fila e blz todas as vendas são enviadas corretamente, mas quando eu abro dois sistemas e mandei duas requisições simultâneas ao SAT, este retorna Timeout durante a comunicação com o SAT 

haaaaaaa. então tá errado sua fila. esse é o problema. agora que li

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • 2 semanas depois ...
  • Solution
Postado

olá pessoal... 

Resolvi meu problema, utilizei o CriticalSection para criar a Fila....

Assim o meu servidorSat, que tem conectado apenas 1 SAT e 1 Impressora,  aceita requisições de vários caixas (fiz testes com 3 acessando a aplicação simultaneamente). O acbrSAT emite, imprime e retorna corretamente para cara requisição, sem conflito com a DLL.

Obrigada a todos pela ajuda. ;-) 

 

  • Curtir 2
  • Este tópico foi criado há 880 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.