У меня есть представление, которое получает данные из формы и выполняет подпроцесс:
def sync_job(request, job_id, src, dest):
form = SyncJobForm()
check = SyncJob.objects.get(id=job_id)
check.status = True
check.save()
pre_sync = SyncJobCMD.objects.get(id=1)
p = Popen([str(pre_sync), '-avu', str(src), str(dest)], stdout=PIPE)
syncoutput,syncerror = p.communicate()
check.log = syncoutput
check.status = False
check.save()
return render_to_response('sync_form.html', {'syncoutput': syncoutput, 'form': form}, context_instance=RequestContext(request))
Я хотел бы иметь возможность отменить запущенный процесс, но я не нашел, как это сделать с подпроцессом. Кроме того, что происходит, когда пользователь запускает задание подпроцесса и переходит на другую страницу, процесс завершается в фоновом режиме? Желательно ли в этом случае использовать Shell = True? Спасибо.