Home > Software engineering >  celery task unable to recongize FFmeg-python
celery task unable to recongize FFmeg-python

Time:09-16

I am writing a Flask application and using a celery task for a long-running task. Basically, that long-running task uses the ffmpeg-python module to process a video. The code is working fine when I run it normally via flask API but when I am trying to execute that task via celery worker it does not recognize FFmpeg. Please help

@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

Celery Error Attached

CodePudding user response:

It looks like you're not running the Celery tasks in the same Python environment than the Flask app. Could you double check if your Flask app is running using /home/adil/.local/lib/python3.10 as python interpreter?

CodePudding user response:

Basically, after going through FFmpeg support material I got to know that FFmpeg-python needs FFmpeg installed on the machine with the proper setting of env variable which solved the issue.

command to install FFmpeg on Ubuntu,

sudo apt install ffmpeg

  • Related