2010-01-29 57 views
2

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

所以我的看法是这样的:

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

这个特殊的问题已经对如此提及多次,但我的情况略有不同:我要寻找一个解决方案,完全是Python的,不需要在股票django中找不到任何东西,并且不需要使用数据库。

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

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

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

__init __()被调用一次 - 在服务器启动 - 而不是单个 请求

还有一篇博客文章here谈论django中的全球国家。 有什么想法?

+0

所以@jetxee发布什么的问题是,你希望任何人(无论谁开始了长时间运行的任务)都能够检查该任务的进度? – 2010-01-29 20:36:26

+0

是的,这是完全正确的。 – g33kz0r 2010-01-29 20:57:04

+0

如果你说“不需要在股票django中找不到任何东西”,然后说“不需要使用数据库”。由于Django与数据库耦合,你已经将大量的股票django带出了这个等式。关心启发我们为什么? – Spacedman 2011-10-22 10:41:42

回答

1

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

+0

这就是我最终做的。我使用了一个已知状态为/tmp/program.pid的文件 – g33kz0r 2010-01-29 21:55:40

1

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

相关问题