Snowflake cloud data platform 如何使用雪花节点连接器重新使用令牌?

Snowflake cloud data platform 如何使用雪花节点连接器重新使用令牌?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我被要求在这里报告使用节点连接器连接雪花的问题 问题: 问题是我找不到任何关于如何重用现有令牌以避免连接到Snowflake时花费很长时间的文档 非常感谢您的帮助 编辑 以下是我使用的代码: // Tokens are retrieved from a DB if (tokens) { connection.masterToken = tokens.masterToken; connection.masterTokenExpirationTime = tokens.masterToken

我被要求在这里报告使用节点连接器连接雪花的问题

问题:

问题是我找不到任何关于如何重用现有令牌以避免连接到Snowflake时花费很长时间的文档

非常感谢您的帮助

编辑

以下是我使用的代码:

// Tokens are retrieved from a DB
if (tokens) {
  connection.masterToken = tokens.masterToken;
  connection.masterTokenExpirationTime = tokens.masterTokenExpirationTime;
  connection.sessionToken = tokens.sessionToken;
  connection.sessionTokenExpirationTime = tokens.sessionTokenExpirationTime;
}
connection.connect(async function (err, conn) {
  if (err) {
    reject(err);
  } else {
    resolve();
  }
});

这可能不是一个完整的答案,但希望它能帮助你或其他人。我也有过类似的问题。对我们来说,这个过程是通过web服务获取JWT令牌。我还没有对此进行测试,但怀疑这可能会被重复使用。JSON响应包含一个“lease\u duration”属性。我猜这是在几秒钟内,但不知道,虽然我试图检查。给你一个想法,我得到的一个值是2764800。您可以通过以下方式计算出所需的时间:

Long leaseDurationInMs = Long.parseLong(result.get("lease_duration"));
Date estimatedLeaseExpiration = new Date(leaseStartTime+leaseDurationInMs);
System.out.println("Estimated lease expiration timestamp (human readable): "+estimatedLeaseExpiration);
Long estimatedLeaseExpirationInMs = estimatedLeaseExpiration.getTime();

然后,如果您每次都要获取此令牌,请检查此值,以查看是否需要获取另一个令牌。

很抱歉回答了我自己的问题,但为了避免频繁连接,我最终将数据缓存在了我这边。

我也遇到过类似的问题。对我们来说,这个过程是通过web服务获取JWT令牌。我还没有测试过这个,但怀疑它可能会被重复使用。问题是它似乎忽略了我传递的任何令牌,每次都试图重新登录,即使是几秒钟之后。我已经在我的原始帖子中添加了用于登录(缩短)的代码。