title: Threading in Django is not working in production
body: <p>I have a function in my Django views.py that looks like this.</p>
  
  <pre><code>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'))
  </code></pre>
  
  <p>Here, I'm trying to call a function 'background_match' in a separate thread when ProcessForm is submitted. Since this thread takes some time to complete, I redirect the user to another page named 'mart:processing'.</p>
  
  <p>The problem I am facing is that it all works fine in my local machine but doesn't work on production server which is an AWS EC2 instance. The thread doesn't start at all. There's a for loop inside the background_match function which doesn't move forward.</p>
  
  <p>However, if I refresh (CTRL + R) the 'mart:processing' page, it does move by 1 or 2 iterations. So, for a complete loop consisting of 1000 iterations to run, I need to refresh the page 1000 times. If after, say, 100 iterations I don't refresh the page it gets stuck at that point and doesn't move to the 101st iteration. Please help!</p>