Django 预加载 Yelp API 结果
Posted
技术标签:
【中文标题】Django 预加载 Yelp API 结果【英文标题】:Django preload Yelp API results 【发布时间】:2017-11-28 10:15:07 【问题描述】:我正在为一家餐厅创建一个网站,他们想展示他们的 Yelp 评论。我配置并可以使用 Yelp API 检索数据。我必须查询两件事才能得到我需要的东西。总而言之,这意味着页面需要 10 到 15 秒才能加载,而且我不想每次有人想要查看页面时都查询 Yelp API。
yelp_api = YelpAPI('secretkey1', 'secretkey2')
business_results = yelp_api.business_query(id='secretbuisness', location='secretplace')
reviews_results = yelp_api.reviews_query(id='secretbuisness', location='secretplace')
return render(request, 'reviews.html', 'reviews_results': reviews_results, 'business_results': business_results)
有什么方法可以让我将 Yelp API 数据与页面请求分开并将其存储在某个地方以供使用,也许每 5-10 分钟更新一次?
【问题讨论】:
【参考方案1】:当然,您可以使用后台任务来执行此操作。
选择一个后台任务 django 应用程序:
Django Background Tasks(设置简单,使用方便,功能不是很丰富,但可以解决您的问题) Celery(功能丰富、高级设置、高级使用)为结果制作模型以将它们存储在数据库中
每隔一小时左右在后台任务中发出一个 api 请求,并将结果存储在您创建的模型中。 在 html 中显示模型的结果。或者,您可以使用 ajax (javascript) 在 html 中异步执行此操作。 因此,在要显示结果的页面上,您可以使用 javascript 向 rest api of yelp 发出 ajax 请求,并使用 handlebars 或其他 javascript 渲染引擎之类的东西渲染整个数据。如果混合使用 javascript 模板引擎和 django 模板语法,请注意,因为 django 可能会渲染 javascript 模板。因此,这是解决方案:How to escape or in django template?
【讨论】:
以上是关于Django 预加载 Yelp API 结果的主要内容,如果未能解决你的问题,请参考以下文章