Google OAuth тупик на однопоточном сервере - PullRequest
0 голосов
/ 04 февраля 2020

У меня немного t2.nano с одним процессором. Приложение Tomcat опрашивает события календаря из календаря Google, используя Google-OAuth. Иногда Tomcat зависает.

Уверен, что OAuth refre sh зависает, потому что он пытается обновить sh OAuth-токен, который инициирует запрос от Google на мой сервер, чей одиночный ЦП занят блокировкой в ​​Credentials class.

Есть ли способ обойти это, кроме добавления процессоров? Возможно, какой-нибудь способ вызвать асинхронный c токен refre sh в Google? Или какой-то трюк с таймаутом в моем расписании?

При запуске приложения я делаю это (упрощенная версия)

ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleWithFixedDelay(() -> {
        EventFetcher.fetchUpcomingEvents()
    }, 0L, 1L, TimeUnit.HOURS);

Код EventFetcher выглядит так:

com.google.api.client.auth.oauth2.Credential credentials = ...;
com.google.api.services.calendarCalendar service = new Calendar.Builder(..., credentials).build();
com.google.api.services.calendar.model.Events events = service.events().list(calendarId).execute();
handleEvents(events);
...