我正在编写一个酒瓶应用程序,并将芹菜任务用于长期运行的任务。基本上,这个长期运行的任务使用ffmpeg-python模块来处理视频。当我通过烧瓶API正常运行它时,代码工作正常,但是当我试图通过芹菜工人执行该任务时,它不识别FFmpeg。请帮帮忙
@celery.task(bind=True)
def process_upload(self, file_name):
self.update_state(state='PROGRESS',
meta={'current': 1, 'total': 4,
'status': "extracting audio"})
get_audio(file_name=file_name)
return {'current': -1, 'total': 4, 'status': 'Task completed!'}
@app.route('/process_upload', methods=['POST'])
def processupload():
task = process_upload.apply_async(args=['output1'])
return jsonify({'task_id': task.id}), 202,
def get_audio(file_name):
from os.path import exists
import ffmpeg
try:
if not exists(file_name + '.mp3'):
video = ffmpeg.input(file_name + '.mp4')
output = ffmpeg.output(video.audio, f'{file_name}.mp3')
ffmpeg.run(output)
return True
except Exception as e:
raise e
发布于 2022-09-15 12:14:38
基本上,在阅读了FFmpeg支持材料之后,我了解到FFmpeg-python需要在机器上安装FFmpeg,并设置适当的env变量来解决这个问题。
命令在Ubuntu上安装FFmpeg,
sudo apt安装ffmpeg
发布于 2022-09-15 10:52:57
看起来,您没有在与Flask应用程序相同的Python环境中运行芹菜任务。您能再检查一下您的Flask应用程序是否使用/home/adil/.local/lib/python3.10
作为python解释器运行吗?
https://stackoverflow.com/questions/73729672
复制相似问题