当前位置:  开发笔记 > 后端 > 正文

使用Django长时间运行任务

如何解决《使用Django长时间运行任务》经验,为你挑选了1个好方法。

我的目标是创建一个能够执行持久的主要系统任务的应用程序,例如:

从存储库中检出代码,

在各种本地化之间复制目录,

等等

问题是我需要以某种方式独立于Web浏览器进行准备.我的意思是,例如在开始结账/复制操作后,关闭Web浏览器不会中断操作.所以回到那个网站后,我可以看到复制继续进行或者在浏览器关闭时启动了另一个操作......

我正在搜索各种工具,如RabbitMQ + Celery,Twisted,Pyro,XML-RPC,但我不知道这些工具是否适合我.有没有人在创建Django应用程序时遇到类似的需求?如果有任何我应该知道的方法/包,请告诉我.代码示例也将非常受欢迎!

提前感谢您的建议!

(抱歉我的英语不好.我正在努力.)



1> David Woleve..:

基本上,您需要有一个在请求之外运行的进程.绝对最简单的方法(至少在类Unix操作系统上)是fork():

if os.fork() == 0:
    do_long_thing()
    sys.exit(0)
… continue with request …

这有一些缺点(例如,如果服务器崩溃,"长事"将会丢失)......这就是Celery可以派上用场的地方.它将跟踪需要完成的工作,作业的结果(成功/失败/无论如何),并使在其他机器上运行作业变得容易.

使用带有Redis后端的Celery(参见Kombu的Redis传输)非常简单,所以我建议先在那里查看.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有