从 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)
这确实有效,但对我的需要来说太慢了。也许有一种使用套接字的方法,但我无法让它工作。套接字在后台进程中被阻塞。
我想在后台进程(从 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)
这确实有效,但对我的需要来说太慢了。也许有一种使用套接字的方法,但我无法让它工作。套接字在后台进程中被阻塞。