如何避免每次生成api请求python时重新构建Googleapi客户端



在我的Django web应用程序中,我有一个向谷歌的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")

相关内容

  • 没有找到相关文章

最新更新