5
大量在后台进程中抛出RejectionException而不是ConnectionException
我有在多个队列工作器上运行的作业,其中包含一些使用Guzzle的HTTP请求。但是,GuzzleHttp\Exception\RequestException当我在后台进程中运行这些作业时,该作业中的try-catch块似乎没有出现。正在运行的进程是php artisan queue:workLaravel队列系统工作程序,它监视队列并提取作业。 相反,抛出的异常是以下GuzzleHttp\Promise\RejectionException消息之一: 该承诺因以下原因而被拒绝:cURL错误28:在接收到0个字节的30001毫秒后操作超时(请参阅 https://curl.haxx.se/libcurl/c/libcurl-errors.html) 这实际上是伪装的GuzzleHttp\Exception\ConnectException(请参阅https://github.com/guzzle/promises/blob/master/src/RejectionException.php#L22),因为如果我在通过访问URL,我确实收到了ConnectException如下消息: cURL错误28:100毫秒后操作超时,收到0个字节中的0个(请参阅 https://curl.haxx.se/libcurl/c/libcurl-errors.html) 触发此超时的示例代码: try { $c = new \GuzzleHttp\Client([ 'timeout' => 0.1 ]); $response = (string) $c->get('https://example.com')->getBody(); } catch(GuzzleHttp\Exception\RequestException $e) { // This occasionally gets catched when a ConnectException (child) is thrown, // but it doesnt happen with RejectionException because it is not …