我想在后台进程上运行一个计算模拟(从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
更改行为。
最好的方法是什么?
答案 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)
这确实有效,但对我的需求来说却很慢。也许有一种使用套接字的方法,但我并不能让它工作。套接字在后台进程中被阻止。