Django可以使用链接到其他库的“外部”python脚本(NumPy,RPy2 ......)

时间:2010-09-23 08:21:14

标签: python mysql django

我是IT业务(严肃)开发领域的新手,但我想到了一个商业创意,并且仍然试图模仿整个基础架构应该如何运作。

我已经做了一些关于提供解决方案的好技术的研究。我非常倾向于在服务器端使用Python,MySql,Django(Apache),在客户端使用一些RIA(可能是Flex),因为我需要一些高级可视化功能(特别是在看到FLARE项目之后)。

应用程序需要在数值/统计方面进行一些“提升”,并将R与Python(RPy2)+其他类似NumPy集成似乎是理想的。

到目前为止我无法得到的东西(当然是因为我是新手)如下:

Django(一种或另一种)可以执行一个(外部)python脚本/程序,它包含对额外库(NumPy ...)的引用吗?

例如:用户触发执行统计分析的动作,Django接收请求并应运行一些python代码(使用R,NumPy ...),它使用数据库中的数据并将结果存储回DB中。 Django访问数据库数据并将其发送回客户端应用程序以进行显示。

这是正确的逻辑还是我完全偏离了道路?

非常感谢您的专业知识。

2 个答案:

答案 0 :(得分:5)

Django是一个Python程序。和任何其他Python程序一样,它将能够访问其他Python脚本/模块。那么问题是如何执行脚本。如果您的脚本明确定义了main(或另一个起始点)函数,那么您只需像导入模块一样导入它并调用main

例如:

# my custom script. Located in my_script.py
# lots of functions

def main():
    # call functions in sequence.

# my django view.
from myscript import main as script_main
script_main()

如果您宁愿从命令行执行,请查看subprocess模块。如果你想异步运行它,那么Celery之类的东西可能就是你想要的。

答案 1 :(得分:1)

如果您可以将它安装在服务器上并将其导入到python中,那么您可以在python中使用它,因此可以在Django中使用它。

也就是说,如果

import foo

有效,那么

import foo

foo.bar(fobaz)

假设没有 Django它将工作。此外,如果您尝试在Django之外执行发送HTTP标头或响应的操作,则可能会遇到问题,但数字包不会执行此类操作。