Upload S3 atrasado

2

Eu tenho 2 servidores usando os mesmos dados localizados no armazenamento do AWS S3. Um está processando o tráfego HTTP, o outro faz trabalhos mais antigos. Como isso funciona é que o HTTP one salva dados no S3, despacha o evento para o backend e os dados são processados.

No entanto, parece que a cada dois minutos há um erro no back-end porque os dados no S3 ainda não existem. Existe um atraso entre o upload de arquivos para o S3 e tê-los disponíveis para outras conexões de clientes?

Tenho certeza de que o upload terminou no momento em que o backend acessa esses arquivos, e o servidor HTTP usa a conexão keep-alive com o S3.

    
por skrat 19.04.2011 / 22:13

2 respostas

2

Devido à forma como o S3 distribui os dados, uma vez que eles são carregados e como eles balancear a carga de suas solicitações de front-end, seria perfeitamente possível que um objeto levasse alguns segundos para se propagar completamente em torno de sua infraestrutura. Eu recomendaria apenas colocar um atraso de alguns segundos em sua lógica (entre o upload e a recuperação) ou, possivelmente, apenas detectar uma falha, em seguida, aguarde alguns segundos e tente novamente.

    
por 19.04.2011 / 23:01
2

Embora a primeira resposta sugerindo um tempo limite cego provavelmente funcione, sugiro investigar os eventos de notificação do S3. Se você planeja expandir para mais de dois servidores, usar algo como SNS ou SQS para gerenciar o que acontece depois que um objeto foi escrito com êxito, por exemplo, tornará as coisas muito mais fáceis do que depender de tempos limite gerais.

Você pode ler esta funcionalidade aqui: link

    
por 30.03.2015 / 21:51