【发布时间】:2017-11-28 16:44:25
【问题描述】:
我的 guzzle 客户端有问题。我为例如 1.0 设置了超时,在某些路线上我做了 sleep(5)。无论如何,Guzzle 应该等待响应,什么时候应该抛出异常。 客户:
$requests[] = new Request('GET', $path, [
'timeout' => 1,
'connect_timeout' => 1
]);
$pool = new Pool($this->client, $requests, [
'concurrency' => 5,
'fulfilled' => function ($response, $index) use ($response_merger) {
$response_merger->fulfilled($response);
},
'rejected' => function ($reason, $index) use ($response_merger) {
$response_merger->error($reason);
}
]);
还有我的延迟路线:
$app->get('/timeout', function() use ($app) {
sleep(5);
return (new JsonResponse())->setData([ 'error' => 'My timeout exception.' ])->setStatusCode(504);
});
我总是得到 504 和我的超时异常,而我不应该得到它,因为设置了超时。
我是通过设置客户端完成的,但这对我来说不是解决方案,因为我需要为某些请求而不是客户端自定义超时。
$this->client = new Client([
'timeout' => 3.0,
'connect_timeout' => 1.0
]);
【问题讨论】:
标签: php asynchronous request timeout guzzle