构建API

时间:2017-04-07 04:47:10

标签: javascript python django performance api

我已经构建了一个API,可以在用户提交内容搜索时一次性提供实时数据。我希望通过在收到内容时向用户提供API内容而不是在显示之前等待接收所有数据,将此API提升到新的水平。

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

Django最简单的方法是使用Django Endless Pagination

答案 1 :(得分:0)

我认为应用它的更好方法是在查询中设置限制。例如,如果数据库中有1000条记录,则一次检索所有数据需要一些时间。因此,如果用户搜索单词“apple'”,您最初会发送限制为10的数据库请求。并且,您可以在前端设置分页或滚动功能。如果用户单击下一页或滚动页面,您可以再次发送具有另一个限制10的数据库请求,以便数据库读取操作不会花费更多时间来读取有限数据。

答案 2 :(得分:0)

根据你的解释

  

我们在每次用户搜索时从多个来源提取数据。   我们展示了直接连接到这些来源的刮刀   每个刮刀完成内容检索的内容。我曾是   最初希望在API中模仿这个,这显然是相当的   不同于传统的分页 - 希望这澄清。

所以,在你的API中,你想要

  1. 从用户处获取查询
  2. 发起现场刮刀
  3. 当刮刀完成作业时,将数据返回给用户! (纠正我,如果我错了)
  4. 我的回答

    这可能感觉不太复杂,但这是我能想到的最好的。

    <强> 1。当用户提交查询时 1.启动实时刮刀到celery queue(照顾优先级)。 2.队列完成后,通过sockets将这些信息返回给用户(这是facebook或任何网站发送用户通知的方式。)但在您的情况下,您将发送结果html数据插座。
    3.由于您已经拥有了数据,因此在您抓取时将其移入数据库,您可以像普通数据库一样对其进行分页。

    但是这种方法会给你一个几秒钟或一分钟的滞后时间来回复用户,同时你会让用户忙于UI前端的某些事情。