Использование: Django с Python
Общая цель: вызвать функцию, которая обрабатывает преобразование видео (внутренне выполняет команду curl на медиа-сервере) и должна немедленно вернуться к пользователю.
Использование очереди сообщений было бы излишним для приложения.Поэтому я решил использовать потоки, я написал класс, который перезаписывает метод init и run и вызывает команду curl
class process_video(Thread):
def __init__ (self,video_id,video_title,fileURI):
Thread.__init__(self)
self.video_id = video_id
self.video_title = video_title
self.fileURI = fileURI
self.status =-1
def run(self):
logging.debug("FileURi" + self.fileURI)
curlCmd = "curl --data-urlencode \"fileURI=%s\" %s/finalize"% (self.fileURI, settings.MEDIA_ROOT)
logging.debug("Command to be executed" + str(curlCmd))
#p = subprocess.call(str(curlCmd), shell=True)
output_media_server,error = subprocess.Popen(curlCmd,stdout = subprocess.PIPE).communicate()
logging.debug("value returned from media server:")
logging.debug(output_media_server)
И я создаю экземпляр этого класса из другой функции с именем createVideo, которая вызывает вот так success = process_video(video_id, video_title, fileURI)
Проблема: пользователь перенаправляется обратно в другое представление из createVideo и вызывается processVideo, однако по какой-то причине созданный поток (process_video) не ожидает вывода с медиа-сервера.