2012-02-06 76 views
4

但是,在Django环境中,这更多的是Python的一般问题。如何在python/django中分叉进程?

现在我在django中有这个视图,它必须处理大量的数据。通常它需要服务器(使用代理中运行的django的nginx)几分钟来完成它。有时服务器超时。我不想在nginx中增加超时时间。我意识到,如果我可以在django视图中使用python分叉进程,以便分叉(子)进程将独立于django视图执行所有数据处理,那么视图将能够立即将请求返回给用户因此永远不会超时),并且子进程将在后台继续运行,从而完成所有计算。

因此,这里的问题:

我如何叉在Python独立的进程(如果可能的Python代码是在同一个文件)?如果可能的话,我怎样才能给它分配一个unix进程的优先级呢?

我看了一些在python中分叉进程的方法,似乎有几个选项。哪种方案最适合这种情况?

谢谢。

+0

创建一个python恶魔进程可以帮助你做到这一点。如果有帮助,请检查以下内容http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ – avasal 2012-02-06 04:15:48

回答

5

'最佳实践'的答案是使用队列管理器,通常是RabbitMQ或由Django-芹菜处理的任何后端。

尽管如此,还是有一些更轻的选项可以产生新的线程。这些选项通常缺少的是跟踪进度的一些方法,或者保持线程的数量在控制之下。

检查Django-utils看看是否够了。如果没有,去芹菜。