2016-12-14 45 views
1

我正在使用适用于PHP的AWS SDK V3。有时当我打电话给AWS S3时,即使当我尝试与之交互的对象存在时,由于网络问题,我也会收到类似400错误Bad Request RequestTimeout (client): Your socket connection to the server was not read from or written to within the timeout period的错误。我需要做的是实现一个重试机制。我想知道我们是否可以简单地使用AWS开发工具包中的选项来指定我们希望在发生错误后重试的次数。 我知道我可以用简单的try catch和retry来做到这一点,但我想可能SDK已经提供了一个更干净的方式来做到这一点。 我已经找到静态函数Middleware::retry()但我不知道如何使用它。PHp AWS S3 SDK在网络连接上重试错误

回答

0

构建任何AWS服务客户端类的新实例时,您可以指定重试次数:

$client = new Aws\EC2\Ec2Client([ 
    'region' => 'eu-central-1', 
    'retries' => 3 
]); 

https://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/configuration.html#retries

+0

我检查的原稿,发现已经有重试默认数目是'3'。但是我怎么能指定一个睡眠时间(重试前的延迟时间),因为它好像重试了一次,并且没有时间让服务返回。我使用'delay'选项就像'retries',但它似乎不起作用。 – Amaynut

+0

我添加了配置参数''http'=> ['delay'=> 5000]'。我认为这将是两次重试之间的延迟时间,但即使在没有连接问题的情况下,它仍然是执行整个HTTP请求的时间。 – Amaynut