Как избежать перестройки api клиента Google при каждом api запросе python

В моем веб-приложении Django есть функция, которая делает запрос к google's youtube api, эта функция выводится каждый раз, когда пользователь отправляет форму. Вот код:

import googleapiclient.discovery

def myFunc():
      youtube = googleapiclient.discovery.build(
        api_service_name, api_version, developerKey=api_key)

    request = youtube.search().list(
        part="id",
        maxResults=25,
        q="surfing",
    )
    youtube_api_response = request.execute()

    for object in youtube_api_response["items"]:
      # my logic here

Теперь создаем api клиент, используя

googleapiclient.discovery.build(api_service_name, api_version, developerKey=api_key)

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

Моим предложением было бы иметь один экземпляр вашего клиента. Затем вы могли бы передать этого клиента в функцию, которую хотите использовать. Еще лучше, обернуть клиента в собственный класс и просто вызывать функции из него. Например:

import googleapiclient.discovery

class GoogleClient:
    def __init__(self):
        self.api_service_name = "name"
        self.api_key = "key"
        self.api_version = "version"
        self.client = googleapiclient.discovery.build(
        self.api_service_name, self.api_version, developerKey=self.api_key)
        
    def search(self, q):
        request = self.client.search().list(
            part="id",
            maxResults=25,
            q=q,
        )
        youtube_api_response = request.execute()

        for object in youtube_api_response["items"]:
            print("do whatever")
            

client = GoogleClient()
client.search("query")

Вернуться на верх