django的全球长期运行状态

时间:2010-01-29 20:23:49

标签: django long-running-processes

我需要启动一个长期运行的流程来响应django中的表单提交。然后,我希望能够使用ajax进行轮询并让视图响应进程的状态(启动,停止或运行)。另外,我希望能够停止这个过程。

所以我的观点看起来像这样:

def start()
  . . . 
def stop()
  . . . 
def status()
  . . . 

这个特殊问题已在SO上多次解决,但我的情况略有不同:我正在寻找完全pythonic的解决方案,不需要在库存django中找不到任何东西,并且不需要使用数据库。

我发现最接近的是this post。我已经实现了代码并简化了它,但事实证明request.session不是全局的(两个浏览器有不同的会话)。

可能是我的问题可以通过使用request.session之外的其他东西来解决,以保存启动/停止/状态,但我不知道那会是什么。

我在阅读中遇到的另一种可能性是django中间件,但根据this

  

__ init __()只在服务器启动时调用一次 - 而不是个人调用   请求

还有一篇博文here,讲述了django的全球状态。 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

一种方法是启动一个单独的线程并通过线程模块监视它。

答案 1 :(得分:1)

如果需要从任何进程访问状态,并且您不想将其存储在数据库中(我不明白为什么不存在,那么这是最好的地方),您可以将其存储在数据库中文件系统上的临时文件。

答案 2 :(得分:-1)

您需要使用任务队列框架。试试这个:http://ask.github.com/celery/index.html