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

Getting information from long running background process in Django

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

为了简单起见:假设我想 运行 以下代码很长时间(我将通过 python 工作人员设置):

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

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

最好的方法是什么?

我发现执行此操作的最佳方法是使用缓存

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)

这确实有效,但对我的需要来说太慢了。也许有一种使用套接字的方法,但我无法让它工作。套接字在后台进程中被阻塞。