Почему мой процесс FastAPI приостанавливается и как мне этого избежать?Python

Программы на Python
Ответить
Anonymous
 Почему мой процесс FastAPI приостанавливается и как мне этого избежать?

Сообщение Anonymous »

Я работаю над веб-приложением с использованием FastAPI, которое использует ffmpeg для наложения звука на видео для пользователя. У меня возникла проблема: когда я использую subprocess.run(cmd), он автоматически приостанавливает процесс, запускающий мое приложение FastAPI. Я не могу понять, как получить журналы ошибок, чтобы понять, почему это так, и я не нашел в Интернете ничего, что бы говорило об этом.

Код: Выделить всё

@app.get("/overlay-audio/")
async def get_video(audio_file: str, forged_name: Annotated[str, Query()] = "default"):
video_path = os.path.join(output_path, "sample.mp4")
audio_path = os.path.join(output_path, audio_file)
forged_path = os.path.join(output_path, forged_name + ".mp4")
print("Video path: " + video_path)
print("Audio path: " + audio_path)
print("Output path: " + forged_path)

# command to recreate
# ffmpeg -i input.mp4 -i input.wav -c:v copy -map 0:v:0 -map 1:a:0 -c:a aac -b:a 192k output.mp4

cmd = ["/opt/homebrew/bin/ffmpeg",
"-i", video_path,
"-i", audio_path,
"-c:v", "copy",
"-map", "0:v:0",
"-map", "1:a:0",
"-c:a", "aac",
"-b:a", "192k",
forged_path]

subprocess.run(cmd)

return {"forged_vid": f"forged_{forged_name}"}

if __name__ == "__main__":
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
Я пробовал не записывать вывод на терминал, так как читал, что это может быть причиной приостановки использования result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE), и я также попробовал запустить его асинхронно, чтобы избежать блокировки цикла событий, используя

Код: Выделить всё

result = await asyncio.create_subprocess_exec(
*cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
но ничего не работает. Любая помощь или возможные другие способы сделать это будут очень признательны. Вывод терминала о приостановке: [1] + 12526 приостановлено (вывод tty) "/Users//Tech Projects/project/tts/videnv/bin/python"

Подробнее здесь: https://stackoverflow.com/questions/793 ... avoid-this
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»