使用Django视图在远程服务器上的后台运行Python脚本

时间:2014-12-13 13:29:21

标签: python django

我想要实现的是运行python一些脚本,它将收集数据并在后台将其插入到DB中。 所以基本上,一个人打开Django视图,点击一个按钮然后关闭浏览器,Django在服务器上启动这个脚本,然后脚本在后台收集数据,而其他一切都是自己的。

实现此类功能的最佳库,框架,模块或包是什么?

3 个答案:

答案 0 :(得分:5)

Celery是此类任务最常用的工具。

答案 1 :(得分:2)

Celery是一个很好的建议,但它有点沉重的解决方案,除非你需要芹菜的全部功能,否则会有更简单直接的解决方案。

所以我建议使用rqdjango integration of rq

RQ的灵感来自Celery,Resque的优秀部分,并且已被创建为Celery或其他基于AMQP的排队实施的轻量级替代品。

答案 2 :(得分:2)

我谦虚地推荐标准库模块multiprocessing。只要后台进程可以在处理请求的服务器上运行,您就可以了。

虽然我认为这是最简单的解决方案,但这根本不会很好地扩展,因为您在服务器上运行了额外的处理。如果您希望这些事情偶尔发生一次,而不是持续那么久,那么这是一个很好的快速解决方案。

要注意的一件事是:在新启动的进程中 ALWAYS 在执行任何操作之前关闭数据库连接 - 这是因为分叉进程与SQL服务器共享相同的连接并可能进入数据与你的主django进程竞争。