在我的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")