Нет такого файла или каталога с TempDirectory () - PullRequest
0 голосов
/ 26 мая 2020

Я создаю два вложенных временных каталога. Один - сохранить копии изображений, второй - записать видео, которое представляет собой просто список воспроизведения изображений. Это выглядит так:

@app.route("/render/<filter_name>", methods=["POST"])
def render(filter_name: str):
    if request.method == "POST":
        f = request.files["file"]

        with TemporaryDirectory() as tempdir:
            in_dir = TemporaryDirectory(dir=tempdir)
            out_dir = TemporaryDirectory(dir=tempdir)

            image = Image.open(BytesIO(f.read()))

            image.save(in_dir.name + "/image.jpg", "JPEG")

            render_mp4(in_dir.name, out_dir.name, filter_name)

            filename = filter_name + ".mp4"
            fout = open(os.path.join(out_dir.name, filename), "rb")

            response = make_response(fout.read())
            response.headers.set("Content-Type", "video/mp4")
            response.headers.set("Content-Disposition", "attachment", filename=filename)
            return response

К сожалению кажется, что TemporartDirectory закрывается быстрее, чем чтение видео из-за:

[2020-05-26 18:17:45,152] ERROR in app: Exception on /render/dolly-zoom-in [POST]
Traceback (most recent call last):
  File "/home/mat/miniconda3/envs/3DPhotoCreator/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/mat/miniconda3/envs/3DPhotoCreator/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/mat/miniconda3/envs/3DPhotoCreator/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/mat/miniconda3/envs/3DPhotoCreator/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/mat/miniconda3/envs/3DPhotoCreator/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/mat/miniconda3/envs/3DPhotoCreator/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "app.py", line 32, in render
    fout = open(os.path.join(out_dir.name, filename), "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmp6bmet26n/tmpne46ut4u/dolly-zoom-in.mp4'

Есть какие-нибудь советы по этому поводу? Это ошибка чтения двоичного файла, также известного как «rb», в

open(os.path.join(out_dir.name, filename), "rb")

? Советы по этому поводу?

Спасибо!

...