Django预加载Yelp API结果

时间:2017-06-25 09:34:23

标签: python django

我正在为一家餐馆制作一个网站,他们想要展示他们的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 个答案:

答案 0 :(得分:0)

当然,您可以使用后台任务来执行此操作。

  1. 选择一个后台任务django应用程序:

    • Django Background Tasks(设置简单,使用方便,功能不是很丰富,但对你的问题有好处)
    • Celery(功能丰富,高级设置,高级用途)
  2. 为结果制作模型以将其存储在数据库中

  3. 每小时左右在后台任务中发出一个api请求,并将结果存储在您创建的模型中。
  4. 在html中显示模型的结果。
  5. 或者你可以在html中使用ajax(javascript)异步执行此操作。 因此,在您要显示结果的页面上,您可以使用javascript向rest api of yelp执行ajax请求,并使用handlebars或其他javascript呈现引擎呈现整个数据。如果你混合使用javascript模板引擎和django模板语法,请注意,因为django可能会呈现javascript模板。因此,这是解决方案:How to escape {{ or }} in django template?