From 124ad5e5338836723c1560862ed5f05026ee90c8 Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Sun, 1 May 2022 21:14:35 +0300 Subject: [PATCH] Refactoring --- app/main.py | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/app/main.py b/app/main.py index a3c6f22..300fe21 100644 --- a/app/main.py +++ b/app/main.py @@ -37,26 +37,27 @@ async def convert( temp_filename = str(temp_uuid) + ".fb2" converted_temp_filename = str(temp_uuid) + "." + format_lower - async with aiofiles.open(temp_filename, "wb") as f: - while content := await file.read(1024): - if isinstance(content, str): - content = content.encode() + try: + async with aiofiles.open(temp_filename, "wb") as f: + while content := await file.read(1024): + if isinstance(content, str): + content = content.encode() - await f.write(content) + await f.write(content) - proc = await asyncio.create_subprocess_exec( - "./bin/fb2c", - "convert", - "--to", - format, - temp_filename, - stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE, - ) + proc = await asyncio.create_subprocess_exec( + "./bin/fb2c", + "convert", + "--to", + format, + temp_filename, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) - _, stderr = await proc.communicate() - - await aiofiles.os.remove(temp_filename) + _, stderr = await proc.communicate() + finally: + await aiofiles.os.remove(temp_filename) if proc.returncode != 0 or len(stderr) != 0: try: @@ -69,11 +70,12 @@ async def convert( ) async def result_iterator() -> AsyncIterator[bytes]: - async with aiofiles.open(converted_temp_filename, "rb") as f: - while data := await f.read(2048): - yield data - - await aiofiles.os.remove(converted_temp_filename) + try: + async with aiofiles.open(converted_temp_filename, "rb") as f: + while data := await f.read(2048): + yield data + finally: + await aiofiles.os.remove(converted_temp_filename) return StreamingResponse(result_iterator())