我需要在 Google Cloud 中关闭 http CloudTasksClient 吗?
Do I need to close http CloudTasksClient in Google Cloud?
我正在通过 http 使用 PHP 设置 Google Cloud Tasks,我不明白我是否需要关闭连接?
我正在寻找两个地方:
1) Docs
$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);
$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,如果有任何不同的话。
通常 close() 语句是为了优雅地结束连接资源,例如刷新挂起的数据和释放内存。
在查看代码时,close()
似乎做了以下事情:
- 优雅地清理 in-progress RPC 调用
- 释放一些内存资源
- 目前似乎对 REST 调用没有影响
- 为未来创建一个 space,Cloud Tasks-specific 拆解活动
作为最佳实践,应该这样做。但是,如果您的 PHP 脚本非常专注于 Cloud Tasks 交互,那么它的影响似乎有限。
遍历代码
正在查看 Cloud Tasks client code, it appears the close method is defined in the GapicClientTrait。
原来这个语句是传输的直通:
/**
* Initiates an orderly shutdown in which preexisting calls continue but new
* calls are immediately cancelled.
*
* @experimental
*/
public function close()
{
$this->transport->close();
}
code for available transports 有 REST 和 gRPC 选项。
在 HttpUnaryTransportTrait 的 REST 之后,这似乎是 no-op:
public function close()
{
// Nothing to do.
}
跟随 gRPC 到 Grpc\BaseStub 我们到达了 gRPC client implementation。
我正在通过 http 使用 PHP 设置 Google Cloud Tasks,我不明白我是否需要关闭连接?
我正在寻找两个地方:
1) Docs
$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);
$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,如果有任何不同的话。
通常 close() 语句是为了优雅地结束连接资源,例如刷新挂起的数据和释放内存。
在查看代码时,close()
似乎做了以下事情:
- 优雅地清理 in-progress RPC 调用
- 释放一些内存资源
- 目前似乎对 REST 调用没有影响
- 为未来创建一个 space,Cloud Tasks-specific 拆解活动
作为最佳实践,应该这样做。但是,如果您的 PHP 脚本非常专注于 Cloud Tasks 交互,那么它的影响似乎有限。
遍历代码
正在查看 Cloud Tasks client code, it appears the close method is defined in the GapicClientTrait。
原来这个语句是传输的直通:
/**
* Initiates an orderly shutdown in which preexisting calls continue but new
* calls are immediately cancelled.
*
* @experimental
*/
public function close()
{
$this->transport->close();
}
code for available transports 有 REST 和 gRPC 选项。
在 HttpUnaryTransportTrait 的 REST 之后,这似乎是 no-op:
public function close()
{
// Nothing to do.
}
跟随 gRPC 到 Grpc\BaseStub 我们到达了 gRPC client implementation。