从Django中长时间运行的后台进程获取信息

时间:2016-04-18 19:46:06

标签: python django background-process python-rq

我想在后台进程上运行一个计算模拟(从redis rq开始),我可以在其中查询当前状态,以及使用Django更改参数。

为了简单起见:让我们说我想长时间运行以下代码(我将通过python worker设置):

def simulation(a=1):
     value = 0
     while a != None:     
          value += a
          time.sleep(5)

然后,通过访问URL,它会告诉我value的当前值。我还可以POST到URL以更改a的值,即a=None以停止模拟,或a=-10更改行为。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现这样做的最好方法是使用缓存

from django.core.cache import cache

def simulation(a=1):
     value = 0
     while a != None:     
          value += a
          cache.set('value', value, 3600)
          time.sleep(5)
          a = cache.get('a', None)

这确实有效,但对我的需求来说却很慢。也许有一种使用套接字的方法,但我并不能让它工作。套接字在后台进程中被阻止。