Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 写入S3的消息时间_Python_Amazon S3_Boto_Boto3 - Fatal编程技术网

Python 写入S3的消息时间

Python 写入S3的消息时间,python,amazon-s3,boto,boto3,Python,Amazon S3,Boto,Boto3,使用写入S3(可能包括所有操作)需要大约300毫秒,即使对于EC2实例上的少量数据也是如此 分析表明,时间主要由读取控制,例如,\u SSLSocket.read()——可能是在建立安全连接时,也可能只是为了让服务器响应 有没有办法缩短手术时间?也许可以使用较低级别的API调用 %prun -s time client.put_object(Bucket='MDtemp', Key='temporary2', Body=b'Hello') 2197 function calls (2

使用写入S3(可能包括所有操作)需要大约300毫秒,即使对于EC2实例上的少量数据也是如此

分析表明,时间主要由读取控制,例如,
\u SSLSocket.read()
——可能是在建立安全连接时,也可能只是为了让服务器响应

有没有办法缩短手术时间?也许可以使用较低级别的API调用

%prun -s time client.put_object(Bucket='MDtemp', Key='temporary2', Body=b'Hello')



   2197 function calls (2188 primitive calls) in 0.094 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.045    0.045    0.045    0.045 {built-in method select}
       26    0.045    0.002    0.045    0.002 {method 'read' of '_ssl._SSLSocket' objects}
        2    0.000    0.000    0.000    0.000 {method 'write' of '_ssl._SSLSocket' objects}
       26    0.000    0.000    0.045    0.002 socket.py:364(readinto)
        2    0.000    0.000    0.000    0.000 socket.py:200(makefile)
       26    0.000    0.000    0.045    0.002 ssl.py:737(recv_into)
       27    0.000    0.000    0.000    0.000 message.py:463(get)
        1    0.000    0.000    0.001    0.001 awsrequest.py:195(_handle_expect_response)
        2    0.000    0.000    0.000    0.000 {method 'readline' of '_io._IOBase' objects}
      8/6    0.000    0.000    0.001    0.000 hooks.py:175(_emit)
        2    0.000    0.000    0.000    0.000 socket.py:352(__init__)
      245    0.000    0.000    0.000    0.000 {method 'lower' of 'str' objects}
        1    0.000    0.000    0.092    0.092 connectionpool.py:317(_make_request)
        1    0.000    0.000    0.093    0.093 sessions.py:539(send)
       26    0.000    0.000    0.045    0.002 ssl.py:611(read)
        3    0.000    0.000    0.000    0.000 _collections_abc.py:575(update)
        8    0.000    0.000    0.045    0.006 {method 'readline' of '_io.BufferedReader' objects}
        2    0.000    0.000    0.000    0.000 feedparser.py:217(_parsegen)
      150    0.000    0.000    0.000    0.000 {built-in method isinstance}
        1    0.000    0.000    0.000    0.000 parsers.py:639(_parse_non_payload_attrs)
        8    0.000    0.000    0.000    0.000 client.py:1092(putheader)
        1    0.000    0.000    0.000    0.000 feedparser.py:470(_parse_headers)
        1    0.000    0.000    0.000    0.000 client.py:284(parse_headers)
        7    0.000    0.000    0.000    0.000 parse.py:286(urlparse)
       23    0.000    0.000    0.000    0.000 parse.py:98(_coerce_args)
       27    0.000    0.000    0.000    0.000 socket.py:405(readable)
        1    0.000    0.000    0.094    0.094 {built-in method exec}
       40    0.000    0.000    0.000    0.000 _policybase.py:269(_sanitize_header)
        1    0.000    0.000    0.046    0.046 awsrequest.py:146(_send_output)
        1    0.000    0.000    0.000    0.000 auth.py:532(canonical_standard_headers)
        1    0.000    0.000    0.045    0.045 client.py:347(_read_status)
        ...

您可以使用BASH实现这一点,您必须调用外部应用程序,如AWS命令行界面(CLI)


访问:

您考虑过使用s3cmd吗?它是一个用于linux的命令行工具,非常有效,但我从未测量过它的性能。

s3fs现在支持使用
aiobotore
库。这将重用连接并启用并发性,因此等待时间可以在多次调用中摊销,从而大大降低平均延迟。如果SSL连接尚未建立,则单个呼叫的总时间不会受到太大影响。

需要数百毫秒。如果您对高冗余不感兴趣,还需要约300毫秒(即关闭加密),则可以手动将s3cmd设置为仅使用单个区域(离您最近的区域)。这可能会在那段时间内减少几毫秒。boto3还允许您指定区域,aws cli也是如此。最重要的是SSL握手。在其他环境中(这里不是python人),HTTP keep alives通过重用连接,帮助我在多个请求之间分摊此设置成本。。。但从EC2内部看,与S3 300ms位于同一区域内,仍然显得有些迟缓。我将看看是否有什么可以比较的,这可能有助于规则S3本身作为一个重要的贡献者。我知道,使用我使用异步I/O编写的工具之一,我可以在2秒内发送和接收1000个
HEAD
请求,但现在我不记得它是否为HTTPS。您的实例是否与bucket位于同一区域?事实证明,SSL握手的时间在一个区域内可以忽略不计,因为往返时间很低(对于弹性IP,ping时间<0.2ms)。跨地区,测试us-west-2(客户端)到us-east-1(bucket)第一次请求时,我得到约380ms(很容易归因于SSL协商),第二次请求时,在保持活动的连接上得到90ms。因此,我们每次都必须建立一个新连接。您如何建立一个保持活动的连接?