Meine Python-Anwendung erstellt einen Subprozess für den Upload von AWS CLI S3.Python erstellt einen AWS CLI-Prozess für den S3-Upload und es wird sehr langsam
command = 'aws s3 sync /tmp/tmp_dir s3://mybucket/tmp_dir'
# spawn the process
sp = subprocess.Popen(
shlex.split(str(command)),
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# wait for a while
sp.wait()
out, err = sp.communicate()
if sp.returncode == 0:
logger.info("aws return code: %s", sp.returncode)
logger.info("aws cli stdout `{}`".format(out))
return
# handle error
/tmp/tmp_dir
ist ~ 0,5 GB und enthält etwa 100 Dateien. Upload dauert ~ 25 Minuten, was extrem langsam ist.
Wenn ich AWS-Befehl direkt (ohne Python) ausführen, dauert es weniger als 1 Minute.
Was ist los? Jede Hilfe wird geschätzt.
Python SDK bietet derzeit nicht die gleiche Funktionalität. Ich benutze 'sync'. Es wäre wahrscheinlich besser, aber viel zeitaufwendiger. Können Sie ein Beispiel für einen Code angeben, um Pipe Block irgendwie zu vermeiden? Vielen Dank. –
Ah ja, ich sehe was du meinst über sync (rekursive Kopie von Dir) wird nicht implementiert. Hier ist ein Kern, den ich gefunden habe, der nützlich sein könnte: https://gist.github.com/SavvyGuard/6115006#file-botos3upload-py-L30 –
Auch ich redigierte meine Antwort, um eine alternative Verwendung von 'subprocess' vorzuschlagen. –