#python #django #django-views
#python #django #django-представления
Вопрос:
Я загружаю файл CSV, затем добавляю строки в базу данных, и я хочу иметь возможность приостанавливать, возобновлять или завершать функцию, которая обрабатывает загрузку, чтобы пользователь мог приостановить или завершить, пока файл все еще загружает файл на сервер или когда сервер добавляет содержимое файла CSVв базе данных я пытался использовать потоковую обработку, но я не мог сделать это таким образом, а затем я попытался time.sleep()
, но он просто запускается и не приостанавливает функцию показа, и когда я пытаюсь остановить функцию паузы, она не останавливается
views.py
is_paused = False
def show(request):
content = {}
if not is_paused:
if request.method =='POST':
uploaded_file = request.FILES['file']
print(uploaded_file.name)
print(uploaded_file.size)
fs = FileSystemStorage()
fs.save(uploaded_file.name,uploaded_file)
upload = Upload()
upload.title = uploaded_file.name
upload.file = uploaded_file
upload.save()
filecontent = file_content()
path = '/home/ahmed/Desktop/atlan/atlan/media/' uploaded_file.name
with open(path) as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
next(csv_reader)
for row in csv_reader:
filecontent.seq = row[0]
filecontent.First_name =row[1]
filecontent.Last_name = row[2]
filecontent.age = row[3]
filecontent.street = row[4]
filecontent.city = row[5]
filecontent.state = row[6]
filecontent.zipcode = row[7]
filecontent.dollar = row[8]
filecontent.color = row[9]
filecontent.date = row[10]
file_content.CSV_ID = upload.ID
filecontent.save()
else:
time.sleep(2)
return render(request,'upload/upload.html', content)
def pause_upload(request):
global is_paused
if is_paused == True:
is_paused = False
else:
is_paused = True
return HttpResponse("PAUSED")
def resume(request):
stop_threads = 0
t1 = Thread(target = pause_upload, args =(lambda : stop_threads, ))
t1.start()
time.sleep(1)
stop_threads = 1
t1.join()
print('thread continued')
return render(request,'upload/upload.html')
def stop(request):
pause_upload(request,stop=True)
sys.exit()
return HttpResponse(request,'stopped')
upload.html
<body>
<div class="container">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="custom-file">
<label class="text" for="title">title</label>
<input type="text" class="text" name="title">
</div>
<div class="custom-file">
<label class="file-label" for="file">Browse</label>
<input type="file" class="file-input" name="file">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<div class="container">
<a href="{% url 'pause_upload' %}" class="btn btn-danger">Pause</a>
<a href="{% url 'stop' %}" class="btn btn-danger pull-right">Stop</a>
<a href="{% url 'resume' %}" class="btn btn-success pull-right">Resume</a>
</div>
</div>
</body>