Djangoサーバーでは、機能を開始するボタンが1つのページがあります。 この関数は完了するまでに時間がかかり、別のページからその内容をチェックする目的で、request.session変数にプロセスの更新を書き込もうとしました。 しかし、request.session変数は、それらに含まれる関数が完了するまで更新されないようです。それまで少なくとも変数は更新されません。 私はそうです、もしそうなら、関数の完了前にrequest.session変数に書き込む方法がありますか?関数の前にrequest.session変数を更新する
セッションが正しく設定されているため、他の例で変数を書き込んで読み込むことができます。今のところ、状態更新情報を保存してそこから読み取るための一時的なdbレコードを作成するだけですが、このrequest.sessionの時点で好奇心が強いです - 私の推測は正しいと思いますか?
更新:
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( '技術'、 '')、いずれの関数も処理が完了するまでそれに書き込みません(最後のレコードの処理について書きます)。
あなたの質問には、[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を含める必要があります。あなたのビューとあなたがすでに試したものを投稿してください。そうすれば、答えを提供するほうがはるかに簡単になります。 – trixn
@trixn申し訳ありません、情報を追加しました。 –
実行時間が長い場合は、セロリ、rqなどの非同期タスクシステムを使用して帯域外で実行したいと考えています。 –