Django views.pyには次のような機能があります。Djangoのスレッディングは生産中ではありません
def process(request):
form = ProcessForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.requested_by = request.user
instance.save()
t = threading.Thread(target=utils.background_match, args=(instance,), kwargs={})
t.setDaemon(True)
t.start()
return HttpResponseRedirect(reverse('mart:processing'))
ここでは、ProcessFormがサブミットされたときに別のスレッドで関数 'background_match'を呼び出そうとしています。このスレッドは完了するまでに時間がかかるので、ユーザーを 'mart:processing'という別のページにリダイレクトします。
私が直面している問題は、ローカルマシンではすべて正常に動作しますが、AWS EC2インスタンスである運用サーバーでは機能しません。スレッドはまったく開始しません。 background_match関数の中にforループがあり、それは前進しません。
ただし、「マート:処理」ページをリフレッシュ(CTRL + R)すると、1〜2回繰り返されます。したがって、1000回の反復で構成される完全なループを実行するには、1000回のページを更新する必要があります。 100回反復した後、私はその時点でスタックしたページをリフレッシュせず、101回目の反復に移動しません。助けてください!
ローカルでの生産とのrunserverにuwsgi使用していますか? – user14717