我已经构建了一个API,可以在用户提交内容搜索时一次性提供实时数据。我希望通过在收到内容时向用户提供API内容而不是在显示之前等待接收所有数据,将此API提升到新的水平。
如何解决这个问题?
答案 0 :(得分:1)
Django最简单的方法是使用Django Endless Pagination
答案 1 :(得分:0)
我认为应用它的更好方法是在查询中设置限制。例如,如果数据库中有1000条记录,则一次检索所有数据需要一些时间。因此,如果用户搜索单词“apple'”,您最初会发送限制为10的数据库请求。并且,您可以在前端设置分页或滚动功能。如果用户单击下一页或滚动页面,您可以再次发送具有另一个限制10的数据库请求,以便数据库读取操作不会花费更多时间来读取有限数据。
答案 2 :(得分:0)
根据你的解释
我们在每次用户搜索时从多个来源提取数据。 我们展示了直接连接到这些来源的刮刀 每个刮刀完成内容检索的内容。我曾是 最初希望在API中模仿这个,这显然是相当的 不同于传统的分页 - 希望这澄清。
所以,在你的API中,你想要
我的回答
这可能感觉不太复杂,但这是我能想到的最好的。
<强> 1。当用户提交查询时
1.启动实时刮刀到celery queue
(照顾优先级)。
2.队列完成后,通过sockets
将这些信息返回给用户(这是facebook或任何网站发送用户通知的方式。)但在您的情况下,您将发送结果html数据插座。
3.由于您已经拥有了数据,因此在您抓取时将其移入数据库,您可以像普通数据库一样对其进行分页。
但是这种方法会给你一个几秒钟或一分钟的滞后时间来回复用户,同时你会让用户忙于UI前端的某些事情。