Нужно ли закрывать http CloudTasksClient в Google Cloud?
Я настраиваю Google Cloud Tasks с помощью PHP через http и не могу понять, нужно ли мне закрывать соединение или нет?
Я ищу два места:
1) Документы
$client = new CloudTasksClient();
$queueName = $client->queueName($projectId, $locationId, $queueId);
$httpRequest = new HttpRequest();
$httpRequest->setUrl($url);
$httpRequest->setHttpMethod(HttpMethod::POST);
$task = new Task();
$task->setHttpRequest($httpRequest);
$response = $client->createTask($queueName, $task);
2) Клиентская библиотека Gcloud
$cloudTasksClient = new CloudTasksClient();
try {
$formattedParent = $cloudTasksClient->queueName('[PROJECT]', '[LOCATION]', '[QUEUE]');
$task = new Task();
$response = $cloudTasksClient->createTask($formattedParent, $task);
} finally {
$cloudTasksClient->close();
}
Моя версия:
$client = new CloudTasksClient();
try{
$queueName = $client->queueName($projectId, $locationId, $queueId);
$httpRequest = new HttpRequest();
$httpRequest->setUrl($url);
$httpRequest->setHttpMethod(HttpMethod::POST);
$task = new Task();
$task->setHttpRequest($httpRequest);
$response = $client->createTask($queueName, $task);
}
catch(Exception $e){
$this->logError("Error");
}
finally {
$client->close(); <-- ???????? ( Do I need this )
}
Я использую App Engine, если это имеет какое-либо значение.
1 ответ
Обычно оператор close() должен изящно обернуть ресурс соединения, такой как сброс ожидающих данных и освобождение памяти.
В обзоре кода, close()
кажется, делает следующее:
- Изящно убирать текущие вызовы RPC
- Освободить некоторые ресурсы памяти
- В настоящее время, похоже, не влияет на вызовы REST
- Создайте пространство для будущих действий, связанных с облачными задачами
Как лучшая практика, это должно быть сделано. Тем не менее, если ваш PHP-скрипт довольно сильно сфокусирован на взаимодействии с облачными задачами, он может оказать ограниченное влияние.
Обход кода
Глядя на клиентский код Cloud Tasks, кажется, что метод close определен в GapicClientTrait.
Оказывается, это заявление является промежуточным для транспорта:
/**
* Initiates an orderly shutdown in which preexisting calls continue but new
* calls are immediately cancelled.
*
* @experimental
*/
public function close()
{
$this->transport->close();
}
Код для доступных транспортов имеет опции для REST и gRPC.
После REST для HttpUnaryTransportTrait это выглядит как неработоспособность:
public function close()
{
// Nothing to do.
}
Следуя gRPC к Grpc\BaseStub, мы достигаем реализации клиента gRPC.