2

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

所以我的观点是这样的:

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

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

我发现的最接近的是这篇文章。我已经实现了代码,并对其进行了相当多的简化,但事实证明 request.session 不是全局的(两个浏览器有不同的会话)。

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

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

__init__() 只被调用一次——在服务器启动时——而不是针对单个请求

这里还有一篇博客文章讨论了 django 中的全局状态。有什么想法吗?

4

3 回答 3

1

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

于 2010-01-29T20:46:40.177 回答
1

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

于 2010-01-29T21:30:09.000 回答
-1

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

于 2011-10-22T09:35:51.427 回答