No seu caso, eu desacoplaria a geração das imagens e o upload. Você pode fazer isso escrevendo as imagens em um diretório e regularmente (daemon, cron job) carregar as imagens. Dessa forma, você é mais robusto no caso de a conexão com o servidor ficar inativa por um curto período (ou o servidor está reinicializando por algum motivo).
O upload pode ser feito usando rsync
ou rdiff-backup
, se você quiser manter os originais no lado da fonte. Ambos funcionam bem acima de ssh
, para o qual você precisaria de uma chave privada / pública (sem senha) e copiaria a chave pública para o servidor.
Se você não quiser manter nada no cliente, provavelmente terá apenas um script pequeno que carregue os arquivos usando scp
(novamente usando ssh
abaixo) e removendo os arquivos depois de copiados.
Fazer o upload usando HTTP e automatizar o FTP é, na minha experiência, um pouco mais complicado, especialmente se você já tiver ssh
em execução no servidor. Para chamar scp
ou rsync
ou fazer o upload usando HTTP, você não precisa do Python. Se você precisar usar o FTP, convém usar o ftplib