Как правильно использовать LockService в Google Apps Script?

Добрый день. Есть код которые принимает post и get запросы и вставляет переданные данные в таблицу. Чтобы данные не перезаписывались, добавил очередь:
var lock = LockService.getPublicLock();
lock.waitLock(30000);
//код
lock.releaseLock();

Но после этого в логах постоянно появляется ошибка Тайм-аут блокировки: другой процесс слишком долго удерживает блокировку. at doPost(Post:4). Как можно корректно прописать очередь, чтобы не вываливались ошибки?
  • Вопрос задан
  • 510 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Метод waitLock вызывает исключение, обрабатывайте его.

var lock = LockService.getPublicLock();
try {
  lock.waitLock(30000);
  return success();
} catch (err) {
  Logger.log('Could not obtain lock after 30 seconds.');
  return failure();
}


Для неразрывности функции используйте tryLock. Этот метод заворачивает результат блокировки в булево значение:
var lock = LockService.getPublicLock();
var success = lock.tryLock(30000);
if (!success) {
  Logger.log('Could not obtain lock after 30 seconds.');
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы