API前端架构

时间:2011-11-30 11:22:57

标签: python django architecture celery

我想构建一个API的前端网站。基本上,前端需要一些用户输入并使用它来查询API并检索结果。检索结果后,将显示它们。这都是异步完成的。

我的问题是:

  1. 我是否使用像Celery这样的东西来处理后台的API查询?
  2. 假设我使用AJAX(我会),我是否有不同的URL来处理用户输入和检索查询结果?
  3. 我是否使用长轮询来获取并使用JavaScript显示结果?
  4. 考虑到可以进一步过滤检索到的结果,我正在考虑将memcached用作存储。这合适吗?
  5. 如果有什么我错过了,或者有更好的方法,我会很高兴听到它。

    编辑:我意识到我以错误的方式解释了这些要求,所以我会尝试改写。 基本上,我的网站基于我无法控制的API。所以,有第三方API,我的应用程序在后端使用Django,在前端使用JavaScript,CSS和HTML。

    这就是我将Celery引入混合物的原因。在我看来,应用程序的流程是这样的。用户在我的网页上输入所需信息,并在用户提交数据时,以异步方式发送到我的后端。现在,Celery用于向第三方API发送请求并检索数据。同时,我的前端不断轮询我的后端数据,并在收到数据时开始显示它。

1 个答案:

答案 0 :(得分:2)

你在这里错过了一些观点。根据您的要求,我假设您要构建一个前端(html + javascript)来查询(RESTful)API,它只是一个“说”HTTP的服务器。

因此,您的API查询与您的服务器有关,也就是说,使用Apache上的Django或Tornado或.. Celery无法“处理”您的查询,但它对后台任务非常有用。

在客户端,你的AJAX调用将触发映射到某些URL一些服务器端的看法。您将如何定义它们取决于您。看看一些流行的API(twitter),了解它们的结构。

长轮询与您的“业务”逻辑有关,它定义了一种如何在以后向客户端提供数据的方法。

此外,缓存与服务器端性能有关,建议您使用memcached或redis之类的东西。

编辑(编辑):你的方法没有错。 Celery是从外部API获取数据的正确工具,然后将结果保存到数据库,当然还使用一些缓存。然后从客户端进行一些轮询以获得结果。但是,存在一种更优化,非阻塞,优雅的方式来做同样的事情。您可以使用龙卷风从外部API获取数据,当这些数据都准备好后,将它们发送到客户端。没有芹菜,没有长期投票。一个很棒的代码段here