Http запросы к API исполняются больше 20 секунд

У меня есть приложение на django, которое может искать видео на YouTube через YouTube Data API v3 и переводить их описание с помощью Yandex Translate API. Зачастую все работает прекрасно, оба сервиса нормально отвечают. Но примерно раз в 10 вызовов, запрос растягивается секунд на 20. И с переводом и с ютубом такое.

В консоли разработчика смотрю, в графе "Ожидание (Время получения первого байта)" как раз эти 20 секунд и есть. Не понимаю, почему так, вряд ли проблема на стороне сервисов, она ведь на обоих наблюдается. Но никак не могу понять, в чем у меня тогда проблема...

Я пробовал DEBUG поставить на False, где-то советовали. Но проблема не ушла.

Код функций получения данных с YouTube:

from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import os
import pickle

SCOPES = ["https://www.googleapis.com/auth/youtube.force-ssl"]


def auth():
    os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
    api_service_name = "youtube"
    api_version = "v3"
    credentials_filename = "credentials.json"
    credentials = None
    if os.path.exists("token.pickle"):
        with open("token.pickle", "rb") as token:
        credentials = pickle.load(token)
    if not credentials or not credentials.valid:
        if credentials and credentials.expired and credentials.refresh_token:
            credentials.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(credentials_filename, SCOPES)
            credentials = flow.run_local_server(port=8000)
        with open("token.pickle", "wb") as token:
            pickle.dump(credentials, token)
    return build(api_service_name, api_version, credentials=credentials)

def search(youtube, **kwargs):
    return youtube.search().list(part="snippet", **kwargs).execute()

Код их вызова:

yt = auth()
response = search(yt, q=request.POST['search'], maxResults=20, type='video')['items']

Код функции для Yandex API:

endpoint_url = 'https://translate.api.cloud.yandex.net/translate/v2/translate'
list_texts = [str(texts[key]) for key in texts]
body = {
    "targetLanguageCode": language,
    "texts": list_texts,
    "folderId": self.folder_id,
}
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {0}".format(self.token)
}
response = requests.post(endpoint_url, json=body, headers=headers)
Вернуться на верх