gpt4 book ai didi

python - 在 Python 中缓存 Mashape API 调用

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:51 25 4
gpt4 key购买 nike

如何缓存 Mashape API 调用。我得到了下面的代码,但它似乎没有进行缓存。 Mashape 使用 unirest 来获取 API 响应。

def fetchMashape(url, headers):
cached = unirest.get(url, headers=headers) #cache.get(url)
content =""
if not cached:
response = unirest.get(url,
headers=headers)
else:
response = cached
dictionary = json.loads(response.raw_body)

return dictionary

我能够使用一个 URL 来完成此操作,在该 URL 中我可以使用请求 http 库 http://docs.python-requests.org/en/latest/index.html 附加 API key 例如

from django.core.cache import cache
from urllib2 import Request, urlopen, build_opener
from urllib import urlencode
import json, ast
import unirest
import requests
import xmltodict

test = fetchJson("http//www.myapi.com/v1/MY_API_KEY/query/json=blahblah")

#fetchJson with caching
def fetchJson(url):
cached = cache.get(url)
content = ""
if not cached:
r = requests.get(url)
if(r.ok):
cache.set(url, r.text)
content = r.text
else:
content = None
else:
# Return the cached content
content = cached
if content is not None:
return json.loads(content)
else:
return None

我使用的是 django 1.6.6。缓存存储在数据库中。我的settings.py 文件。数据库的名称是dev_cache。

  CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'dev_cache',
'TIMEOUT': 60*60*24*7*4,
'VERSION': 1,
'OPTIONS': {
'MAX_ENTRIES': 1022000
}


}
}

最佳答案

这是我的工作解决方案(请随意改进此代码)

使用示例

url = "https://something_api.p.mashape.com/q=whateverquery",
headers={"X-Mashape-Key": "ABCDEFG12345"}
test = fetchMashape(url, headers)

def fetchMashape(url, headers):
cached = cache.get(url)
content = ""
if not cached:
response = unirest.get(url,
headers=headers)
print "not cached"
if response is not None:
cache.set(url, response.raw_body)
content = response.raw_body
else:
content = None
else:
content = cached
print "already cached"

dictionary = json.loads(content)

return dictionary

关于python - 在 Python 中缓存 Mashape API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com