Мне очень жаль, если это дубликат, но я искал и не смог найти ответ.
В Django я хочу сделать что-то вроде (см. Комментарии):
# we have a file in our database...
v = create_file_entry(clean_data, ip_address)
# next, start a *background process* to upload the file somewhere else...
p = Process(target=upload_file, args=(filepath,v))
p.start()
p.join()
# ...we don't care about the result of the process, or
# wait for it to finish, just redirect the user to success *immediately*
return HttpResponseRedirect('/success/')
Я хочу, чтобы код запустил процесс upload_file, а затем перенаправил пользователя на страницу успеха немедленно , пока процесс upload_file
работает в фоновом режиме (он медленный).Я думал, что это может сделать подпроцесс.
К сожалению, приведенный выше код, похоже, ожидает завершения процесса upload_file
, прежде чем направить пользователя на страницу успеха, а это не то, что мне нужно.
Обратите внимание, что upload_file
- это функция Python в моем файле views.py
.Я слышал о popen
- я думаю, я мог бы преобразовать def upload_file
в автономный скрипт Python и запустить его из командной строки - это запустится, а затем сразу же перенаправит пользователя, как я хочу?Или я должен использовать какой-то поток / процесс?
---- ОБНОВЛЕНИЕ -----
Думаю, я мог бы это выяснить ..если я просто наберу p.start()
, а НЕ p.join()
, то процесс перенаправляется немедленно.Есть ли в этом что-нибудь опасное?