在Django服务器上,我有一个页面,其中有一个启动函数的按钮。
此函数需要一段时间才能完成,我尝试将进程更新写入请求。会话变量,用于从单独的页面检查其内容。
然而,这似乎是一个要求。会话变量在完成其包含的函数之前不会更新。至少在那之前变量不会更新。
我是对的吗?如果是的话,有没有办法写信给请求者。函数完成前的会话变量?
会话设置正确,我可以使用其他示例编写和读取变量。现在,我还将创建一个临时db记录来存储状态更新信息并从中读取,但我对这个请求很好奇。会话的事情-我的猜测正确吗,有没有办法?
更新:
views.py
@login_required
def autolink(request):
result, time = access_check(request, 'super')
if not result:
return redirect('index')
result = f_autolink(request)
if result is None:
result = request.session.get('technical', '')
return render(request, 'autolink.html', {'result': result, })
functions.py
def f_autolink(request):
if request.method == 'GET':
result = None
elif request.method == 'POST':
request.session['technical'] = 'starting the job'
result = f_kzd_autolink(request)
else:
result = None
return result
def f_kzd_autolink(request):
homeless = Kzd.objects.filter(payment__isnull=True, returned=False).distinct()
result = []
count = homeless.count()
counter = 0
request.session['technical'] = 'Starting link job - {c} records to process'.format(c=count)
for h in homeless:
counter += 1
request.session['technical'] = 'Checking record {c1} of {c}'.format(c1=counter, c=count)
/* long code that makes the h in homeless cycle run for about 3 minutes, unrelated to the question */
因此,基本上,视图显示request.session。get('technical',''),但在完成之前,两个函数都不会对其进行写入(然后写入关于处理最后一条记录的信息)。