Pergunta

Qual é a maneira mais rápida de obter um grande número de arquivos (relativamente pequeno 10-50kB) da Amazon S3 de Python? (Na ordem de 200.000 - milhões de arquivos).

No momento eu estou usando boto para gerar URLs assinado, e usando pycurl para obter os arquivos um por um.

Será que algum tipo de concorrência ajuda? objeto PyCurl.CurlMulti?

Estou aberto a todas as sugestões. Obrigado!

Foi útil?

Solução

No caso de python, como este é IO obrigado, vários segmentos usará da CPU, mas provavelmente irá utilizar-se apenas um núcleo. Se você tiver vários núcleos, você pode querer considerar a nova multiprocessador módulo. Mesmo assim, você pode querer ter cada utilização processo de vários segmentos. Você teria que fazer alguns ajustes de número de processadores e fios.

Se você usar vários segmentos, este é um bom candidato para o Queue classe.

Outras dicas

Eu não sei nada sobre python, mas, em geral, você iria querer quebrar o baixo tarefa em pedaços menores para que eles possam ser executados simultaneamente. Você poderia quebrá-lo por tipo de arquivo, ou alfabética ou algo assim, e depois executar um script separado para cada parte do baixo pausa.

Você pode considerar o uso s3fs e comandos do sistema de arquivos simultâneos apenas correr de Python.

Eu tenho usado txaws com torcida para o trabalho S3, embora o que você provavelmente quer é apenas para obter o URL autenticado e utilizar twisted.web.client.DownloadPage (por padrão será feliz ir de fluxo para arquivo sem muito interação).

torcida torna mais fácil para executar em qualquer concorrência que quiser. Para algo na ordem de 200.000, eu provavelmente fazer um gerador e usar um cooperador para definir a minha concorrência e deixar apenas o gerador de gerar cada solicitação de download necessário.

Se você não estiver familiarizado com torcida, você vai encontrar o modelo leva um pouco de tempo para se acostumar, mas é oh tão pena. Neste caso, eu esperaria que tomar CPU mínima e sobrecarga de memória, mas você tem que se preocupar com descritores de arquivos. É muito fácil de misturar em corretor de perspectiva e fazenda o trabalho fora a várias máquinas que você deve achar que precisa de mais descritores de arquivos ou se você tiver várias ligações sobre as quais você gostaria que ele para puxar para baixo.

o que acontece com fio + fila, eu amo este artigo: Prática de programação de rosca com Python

Cada trabalho pode ser feito com ferramentas apropriadas:)

Você quer usar python para testes de estresse S3 :), então eu sugiro encontrar um grande programa de volume downloader e passar um link para ele.

No Windows Tenho experiência para a instalação de programa ReGet (shareware, de http://reget.com ) e criar download de tarefas via COM interface.

Claro que pode outros programas com interface utilizável existe.

Saudações!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top