discovery.build занимает 130 секунд на определенных машинах - PullRequest
0 голосов
/ 29 декабря 2018

Я использую apiclient / googleapiclient для синхронизации с календарем Google.У меня есть тестовый пример, который распечатывает несколько событий из календаря.Проблема в том, что локально (Mac, Ubuntu) он выполняется быстро для всех разработчиков.На всех серверах Ubuntu DigitalOcean строка discovery.build () занимает 130 секунд.

Мой вопрос: почему это работает быстро на машинах разработчика, но медленно на производственных серверах?

Я попробовал apiclient / googleapiclient, build / build_from_document без эффекта.

Я попробовал Http (cache = '. Cache') и запустил тест в цикле, но все, что он сделал, это переместил задержку в 130 секунднесколько строк вниз.

from __future__ import print_function
import sys
from datetime import datetime
from googleapiclient import discovery
import httplib2
from oauth2client import file


store = file.Storage( 'XXXXXXXXXXXX/app/config/calendar-python-creds.json' )
creds = store.get()
credsAuthorize = creds.authorize( httplib2.Http() )


# This line takes 130 seconds on digitalOcean ubuntu servers, but all local devs' machines it is fast (mac and ubuntu)
service = discovery.build('calendar', 'v3', http=credsAuthorize)
now = datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
events_result = service.events().list(calendarId='XXXXXXXXXXXXXXXX@group.calendar.google.com', timeMin=now, maxResults=10, singleEvents=True, orderBy='startTime').execute()
events = events_result.get('items', [])
if not events:
    print('No upcoming events found.')
for event in events:
    start = event['start'].get('dateTime', event['start'].get('date'))
    print(start, event['summary'])

Результаты всегда верны, но 130-секундная задержка discovery.build () на некоторых машинах.

...