繁体   English   中英

Google Apps脚本属性服务访问冲突

[英]Google Apps Script PropertiesService access collision

我需要通过多次调用脚本来安全地访问脚本属性。 通过使用自己的日志记录方法,我可以看到两个调用之间的毫秒数(准确地说是2毫秒)。

是否有任何方法可以确保第一个调用写入的数据将被第二个调用看到? 此刻,第二个调用检查脚本属性中是否已经有数据,但由于第一个调用的位置太近而看不到第一个调用设置的数据。

我已经解决了这个问题。 原来,它与使用PropertiesService发生的碰撞没有任何关系。 获得锁的回调实际上从未到达解锁阶段。

在最长的时间里,我认为这是因为新锁覆盖了当前锁的数据并导致解锁失败,但是实际上是获得该锁的回调在可以解锁该锁之前引发了异常。 我只是将其内容包装在try-catch块中,并将解锁调用放入了finally块中。

我真的应该早点弄清楚。

编辑:我应该指定我正在谈论的“锁”不是LockService的锁。 这是我自己的实现,使用标签标识符而不是整个脚本。

您可以使用锁定服务来管理对共享资源的访问。 它看起来类似于在Java中使用同步代码块。

  var lock = LockService.getScriptLock();
  lock.waitLock(30000);
  var properties = PropertiesService.getScriptProperties();
  properties.setProperty("key", value);            
  lock.releaseLock();

我无法对此进行测试-知道它是否适用于您的用例会很有趣。 有关锁定服务的更多信息https://developers.google.com/apps-script/reference/lock/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM