exc*_*eve 15 python django long-running-processes
我需要运行一个可能需要数小时才能从Django视图完成的过程.我不需要知道状态或与之通信,但我需要该视图在启动过程后立即重定向.
我已经尝试使用subprocess.Popen内一个新的使用它threading.Thread,multiprocessing.Process.但是,父进程一直挂起,直到子进程终止.几乎完成它的唯一方法是使用fork.显然这并不好,因为它会留下一个僵尸进程,直到父终止.
这就是我在使用fork时要做的事情:
if os.fork() == 0:
subprocess.Popen(["/usr/bin/python", script_path, "-v"])
else:
return HttpResponseRedirect(reverse('view_to_redirect'))
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法从Django视图运行完全独立的进程,伤亡最小?或者我做错了什么?
sha*_*nyu 10
我不知道这是否适合您的情况,不过这是我的工作:我使用任务队列(通过django模型); 调用视图时,它会在任务中输入新记录并快乐地重定向.反过来的任务由cron独立于django定期执行.
编辑:cron调用相关(和自定义)django命令来执行任务.
首先 - 尝试使用cron为你完成任务,如早期说shanyu.
如果它不适合你 - 那么尝试使用CeleryProject,用于Django的任务队列.为了工作,它使用RabbitMQ.这里有一个简单使用基础期货的概述
| 归档时间: |
|
| 查看次数: |
6348 次 |
| 最近记录: |