Задать вопрос

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

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

Но после этого в логах постоянно появляется ошибка Тайм-аут блокировки: другой процесс слишком долго удерживает блокировку. at doPost(Post:4). Как можно корректно прописать очередь, чтобы не вываливались ошибки?
  • Вопрос задан
  • 564 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 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.');
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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