Как избежать перестройки 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")