Fix client closing

This commit is contained in:
2022-04-24 23:14:30 +03:00
parent ba9fb6af05
commit 570628a821
2 changed files with 18 additions and 5 deletions

View File

@@ -10,13 +10,18 @@ async def download(
) -> Optional[tuple[httpx.Response, httpx.AsyncClient, str]]: ) -> Optional[tuple[httpx.Response, httpx.AsyncClient, str]]:
headers = {"Authorization": env_config.DOWNLOADER_API_KEY} headers = {"Authorization": env_config.DOWNLOADER_API_KEY}
client = httpx.AsyncClient(timeout=120) client = httpx.AsyncClient(timeout=300)
request = client.build_request( request = client.build_request(
"GET", "GET",
f"{env_config.DOWNLOADER_URL}/download/{source_id}/{remote_id}/{file_type}", f"{env_config.DOWNLOADER_URL}/download/{source_id}/{remote_id}/{file_type}",
headers=headers, headers=headers,
) )
try:
response = await client.send(request, stream=True) response = await client.send(request, stream=True)
except httpx.ConnectError:
await client.aclose()
return None
if response.status_code != 200: if response.status_code != 200:
await response.aclose() await response.aclose()

View File

@@ -1,6 +1,6 @@
from datetime import datetime from datetime import datetime
from typing import Optional
from tempfile import SpooledTemporaryFile from tempfile import SpooledTemporaryFile
from typing import Optional
import httpx import httpx
from pydantic import BaseModel from pydantic import BaseModel
@@ -15,7 +15,9 @@ class UploadedFile(BaseModel):
upload_time: datetime upload_time: datetime
async def upload_file(content: SpooledTemporaryFile, filename: str, caption: str) -> Optional[UploadedFile]: async def upload_file(
content: SpooledTemporaryFile, filename: str, caption: str
) -> Optional[UploadedFile]:
headers = {"Authorization": env_config.FILES_SERVER_API_KEY} headers = {"Authorization": env_config.FILES_SERVER_API_KEY}
async with httpx.AsyncClient() as client: async with httpx.AsyncClient() as client:
@@ -49,9 +51,15 @@ async def download_file(
headers=headers, headers=headers,
) )
try:
response = await client.send(request, stream=True) response = await client.send(request, stream=True)
except httpx.ConnectError:
await client.aclose()
return None
if response.status_code != 200: if response.status_code != 200:
await response.aclose()
await client.aclose()
return None return None
return response, client return response, client