Я написал приложение для управления, в котором есть функция для размещения группы событий в нескольких календарях Google.

На моем компьютере все работает нормально. Но у основного пользователя этого приложения очень плохое сетевое соединение. Более конкретно, пинг к другому серверу варьируется от 23 мс до 2000 мс, и пакеты теряются.

Мой подход заключался в том, чтобы, помимо увеличения тайм-аута, использовать собственный поток для каждого вызова API и повторять вызов в случае ошибки соединения.

И тут я застрял. Теперь каждое событие создано. К сожалению, не один раз, а хотя бы раз. Так что некоторые события были загружены несколько раз.

Я уже пытался сгруппировать их как пакетные запросы, но Google не хочет, чтобы события в нескольких календарях были в одном пакетном запросе.

Надеюсь, моя ситуация ясна и у кого-то есть решение для меня.

Ответы (1)

Сначала я бы попытался убедить «основного пользователя» улучшить сетевое соединение.

Если это невозможно, я бы изменил код, чтобы он имел следующую логику:

  // Current version
  createEvent(parameters)

  // New version
  while (queryEvent(parameters) -> no event) {
      createEvent(parameters)
  }

с соответствующими таймаутами и счетчиками повторов. Идея состоит в том, чтобы реализовать некоторую дополнительную логику, чтобы сделать создание события в календаре идемпотентным. (Это может повлечь за собой создание уникального идентификатора на стороне клиента для каждого события, чтобы вы могли надежно запрашивать события.)

2022 WebDevInsider