我有一个电子表格,我有一个doGet()
一个doPost()
以及一个定时触发器来进行一些更新。我希望这些能够相互阻挡。是的LockService ......希望如此。
LockService上的Google文档未记录getPublicLock()
方法,似乎无法找到符合我需求的任何内容。上面的文档确实说getDocumentLock()
将在一个特别有用的Web应用程序中返回null
,并且互联网上的一般帖子表明它将停止并发运行的代码...这不是不是我想要的。我想要的是在数据更新时停止数据请求。
我试过测试它,但我似乎无法让脚本运行足够长的时间来测试这个让我满意。
如果我使用:
var lock = LockService.getPublicLock();
lock.waitLock(30000);
在所有3个入口点中,当调用任何其他调用时,脚本是否会成功锁定?
答案 0 :(得分:2)
我没有在Google-Apps-Script中遇到过LockService.getPublicLock()。
但是LockService.getScriptLock()应该可以工作。正如文档所述:
获取一个锁,阻止任何用户同时运行一段代码。无论用户的身份如何,都不能同时执行由脚本锁保护的代码段。请注意,在调用Lock.tryLock(timeoutInMillis)或Lock.waitLock(timeoutInMillis)之前,实际上不会获取锁。
我特别使用它与Web App,并且据我测试它,它按照承诺的方式工作:
当使用该应用程序的任何人在脚本中保留了一个Script Lock时,对于任何用户,Script Lock锁定的任何其他块都不会执行。
我会将此作为评论添加,但我无权发表评论..