【问题标题】:How to pool a connection in google apps script?如何在谷歌应用程序脚本中汇集连接?
【发布时间】:2013-10-11 16:59:56
【问题描述】:

之前在 Google Apps 脚本 中编写脚本时,我在所有函数中打开和关闭了我的 Jdbc 连接。

为了加快我的应用程序的速度,似乎最好让连接保持打开状态并在另一个功能中使用它。但是,我不知道应该如何在 Google Apps 脚本 中执行此操作。

谁能给我一个建议或例子?

【问题讨论】:

  • 谢谢!这对我有很大帮助。
  • 抱歉,您需要将其保留在 ScriptDB 中。 CacheService 只保留 String 值。
  • 我构建了下面的解决方案。
  • 1) 不推荐使用 scriptDB 2) 每次执行脚本后 JDBC 连接都会自动关闭,因此没有必要存储它

标签: jdbc google-apps-script connection-pooling


【解决方案1】:

这是一个如何在 ScriptDB 中保持连接的示例。

function myFunction() {
  var conn = ScriptDb.getMyDb().query({name : "my_connection"} );
  var connection = null;
  var itemId = null;

  if(conn.getSize() == 0) {
    Logger.log(" Connection not found, creating new one");
    connection = Jdbc.getConnection('jdbc:mysql://<host>:3306/<instance>', 'user', 'password');
    itemId = ScriptDb.getMyDb().save({name : "my_connection", connection : connection}).getId();

  }else {
    Logger.log(" Connection found, retrieving "+conn.getSize());
    var dbItem  = conn.next();
    connection = dbItem.connection;
    itemId = dbItem.getId();
  }

  //Check if it is closed
  if(connection.isClosed()) {
    connection = Jdbc.getConnection('jdbc:mysql://<host>:3306/<instance>', 'user', 'password');

    //After opening remember to save to dabatase again and retain only one connection
    ScriptDb.getMyDb().removeById(itemId);
    ScriptDb.getMyDb().save({name : "my_connection", connection : connection});
  }

  //Use your connection here

  //Remenber to close it based in some criteria
}

例如here

【讨论】:

  • 非常感谢。我认为这对我有更大的帮助。我还有一个问题:在 ScriptDB 中保留它是不可避免的吗?
  • 我想这是唯一的方法。谷歌表示,测试连接是否存在的时间类似于打开一个新连接,因此他们建议始终打开一个新连接,但正如您所发现的那样,事实并非如此。如果这个回答对你有帮助请点赞! :)
  • 您好,今天我负责池化事务。实际上,这是一种非常好的和创造性的连接池方式。但是,问题是 scriptDb 无法保存 Jdbc 连接。它说:值不是数字,字符串,布尔值等。这是一个不可避免的问题,还是您对此有一些建议?我发现在 prepareStatement 方法中,有一个 'setPooled(boolean)' 方法。不知何故,这不是一个可能的解决方案吗?实际上,我对此有点坚持。
  • 使用 Utilities.jsonStringify(obj) 将对象转换为字符串,使用 Utilities.jsonParse(jsonString) 将字符串转换为对象。 developers.google.com/apps-script/reference/utilities/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多