【问题标题】:Django preload Yelp API resultsDjango 预加载 Yelp API 结果
【发布时间】: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 分钟更新一次?

【问题讨论】:

    标签: python django


    【解决方案1】:

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

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

      • Django Background Tasks(设置简单,使用方便,功能不是很丰富,但可以解决您的问题)
      • Celery(功能丰富、高级设置、高级使用)
    2. 为结果制作模型以将它们存储在数据库中

    3. 每隔一小时左右在后台任务中发出一个 api 请求,并将结果存储在您创建的模型中。
    4. 在 html 中显示模型的结果。

    或者,您可以使用 ajax (javascript) 在 html 中异步执行此操作。 因此,在要显示结果的页面上,您可以使用 javascript 向 rest api of yelp 发出 ajax 请求,并使用 handlebars 或其他 javascript 渲染引擎之类的东西渲染整个数据。如果混合使用 javascript 模板引擎和 django 模板语法,请注意,因为 django 可能会渲染 javascript 模板。因此,这是解决方案:How to escape {{ or }} in django template?

    【讨论】:

      猜你喜欢
      • 2015-07-12
      • 2021-06-24
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2012-05-30
      • 2018-12-28
      • 2018-07-05
      • 2020-01-06
      相关资源
      最近更新 更多