2

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

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

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

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

做这个的最好方式是什么?

4

1 回答 1

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)

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

于 2016-04-22T21:04:14.457 回答