@compuser21

Почему не работает функция с декоратором @app.after_request на сайте (сайт пишу на flask)?

Занимаюсь разработкой сайта для скачивания музыки и видео с ютуба. Сначала скачивается нужный файл на сервер, подвергается обработке (например, наложение обложки на mp3 файл) и посылается пользователю. Но, после отправки файла юзеру, он все еще остается на сервере, занимая место. Я пытался реализовать удаление скаченного файла с сервера с помощью функции с декоратором @app.after_request. Но, действия в функции с таким декоратором не происходят, что сопровождается ошибкой:
AssertionError: The setup method 'after_request' can no longer be called on the application. It has already handled its first request, any changes will not be applied consistently.
Make sure all imports, decorators, functions, etc. needed to set up the application are done before running it.
@app.route('/video/<itag>', methods=['GET', 'POST'])
def video(itag):
    yt = YouTube(input_text)

    title = yt.title

    stream = yt.streams.get_by_itag(int(itag))
    stream.download()

    #дальнейшая обработка файла...

    @app.after_request
    def after_request_func(response):
        os.remove(f'{new_title}.mp4')
        return response

    return send_file(f'{new_title}.mp4',
                     as_attachment=True
                    )

if __name__ == '__main__':
    app.run(debug=False)
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы