在Django服务器中运行复杂的计算(使用python / pandas)

时间:2015-05-30 14:02:37

标签: python django python-2.7 numpy

我在python中使用Django-rest-framework开发了一个RESTful API。我开发了所需的模型,对它们进行了序列化,设置了令牌认证以及随之而来的所有其他尽职调查。

我还使用Angular构建了一个前端,托管在不同的域上。我设置了CORS修改,因此我可以根据需要访问API。一切似乎都很好。

这是问题所在。我正在构建的Web应用程序是一个财务应用程序,应该允许用户在服务器上运行一些复杂的计算并将结果发送到前端应用程序,以便将它们呈现为图表和其他格式。我不知道如何或在何处进行这些计算。

我选择Django作为后端,因为我预计python会帮助我在任何需要的地方运行这样的计算。基本上,当我在服务器上调用特定的api链接时,我希望能够从数据库中检索数据,如果需要,可以从多个表中检索数据,并使用数据运行python或python库(pandas或numpy)进行一些计算并作为对API调用的响应提供计算结果。

如果这是一项艰巨的任务,我至少希望能够使用API​​从表中检索数据到前端,使用JS稍微处理数据,并将其发送到位于上的python函数具有此处理数据的服务器,此函数将运行必要的复杂计算并响应结果,这些结果将呈现为图表/其他格式。

有人能指出我从这里搬家的方向吗?我在线查找资源,但我想我无法找到正确的关键字来搜索它们。我只想要一个shell代码类型的东西集成到我当前的后台使用,我可以调用一些我编写的python脚本来运行这些计算。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我认为你的问题是关于“如何在django的restful框架中进行这些计算?”,但我认为在这种情况下你需要摆脱这个想法。

你做的一切都正确,但RESTful API提供资源 - 基本上是你的模型。

然而,计算并不是那样的。在我看来,你有两种方法可以达到你想要的效果:

1)编写一个表示计算结果的模型,并使用RESTful框架提供服务,因此您的计算是一种资源(如果您将结果作为缓存方式存储在数据库中,则可以很好地工作)

2)向你的api添加一个路由/端点,用于提供该计算的结果。

路径1:计算为资源

创建一个模型,在实例化时处理计算。 您甚至可以为计算设置继承结构并为计算模型实现接口。

这样,当请求资源并且restful框架想要提供此资源时,将提供计算结果。

路径2:自定义端点

为计算端点添加路由,例如/myapi/v1/taxes/compute

在此端点的基础控制器中,您将加载计算所需的模型,执行计算,并根据需要提供结果(可能是json响应)。

您仍然可以使用上述继承结构实现计算。这样,您可以根据参数实例化Computation对象(在上面的例子taxes中)。

这会给你一个想法吗?