Учитывая, что обе функции являются асинхронными, как сделать так, чтобы вторая функция выполнялась после полного выполнения первой функции
Я изучаю django и столкнулся с этой проблемой.
Я написал код, который использует функцию два раза. Вот фрагмент кода.
rjl = run(["gnome-terminal", "--", "sh", "-c", f"ffmpeg -i {video_name}_audio_stripped.mp4 -i {audio_name} -c:v copy -c:a aac {final_tutorial}"], cwd="media/")
while True:
print("frgd")
if(rjl.check_returncode()==None):
print("wdcv")
#for i in range(1000000000):
# continue
run(["gnome-terminal", "--", "sh", "-c", f"ffmpeg -i {final_tutorial} -vcodec libx265 -crf 28 reduce_{final_tutorial}"], cwd="media/")
break
else:
print("ygbhb")
Итак, функция run(). Обратите внимание, что run - это subprocess.run. Вторая run() использует в качестве входных данных вывод, сгенерированный первой функцией run. Поскольку run() является асинхронной, вторая run() выполняется до того, как первая run() произвела желаемый вывод. В данном случае первый run() создает файл .mp4 в папке media. Я внес некоторые изменения в код, как вы можете видеть, чтобы решить эту проблему, но проблема все равно осталась.
Может кто-нибудь подсказать, что мне делать? Я новичок, и помощь будет оценена по достоинству.
Редактировать:
.
В своем коде я также закомментировал for loop. Если я не закомментирую его, код работает правильно, так как в этом случае код начинает выполнять цикл for, который дает время, необходимое первому run() для полного выполнения и генерации желаемого вывода (в данном случае файла .mp4), так что теперь второй run() может использовать файл .mp4, сгенерированный первым run(), но этот метод не кажется правильным.