Refactor asyncify

This commit is contained in:
monosans
2024-02-08 11:22:51 +03:00
parent 562d23e2e9
commit dbeeec5641
3 changed files with 14 additions and 6 deletions
+8
View File
@@ -5,6 +5,8 @@ from pathlib import Path
import platformdirs
from .utils import asyncify
logger = logging.getLogger(__name__)
CACHE_PATH = platformdirs.user_cache_path("proxy_scraper_checker")
@@ -28,6 +30,9 @@ def add_permission(
raise
async_add_permission = asyncify(add_permission)
def create_or_fix_dir(path: Path, /, *, permissions: int) -> None:
try:
path.mkdir(parents=True)
@@ -36,3 +41,6 @@ def create_or_fix_dir(path: Path, /, *, permissions: int) -> None:
msg = f"{path} is not a directory"
raise ValueError(msg) from None
add_permission(path, permissions)
async_create_or_fix_dir = asyncify(create_or_fix_dir)
+3 -3
View File
@@ -20,7 +20,7 @@ GEODB_ETAG_PATH = GEODB_PATH.with_suffix(".mmdb.etag")
async def _read_etag() -> Optional[str]:
try:
await asyncify(fs.add_permission)(GEODB_ETAG_PATH, stat.S_IRUSR)
await fs.async_add_permission(GEODB_ETAG_PATH, stat.S_IRUSR)
async with aiofiles.open(GEODB_ETAG_PATH, "rb") as etag_file:
content = await etag_file.read()
except FileNotFoundError:
@@ -29,7 +29,7 @@ async def _read_etag() -> Optional[str]:
async def _save_etag(etag: str, /) -> None:
await asyncify(fs.add_permission)(
await fs.async_add_permission(
GEODB_ETAG_PATH, stat.S_IWUSR, missing_ok=True
)
async with aiofiles.open(
@@ -41,7 +41,7 @@ async def _save_etag(etag: str, /) -> None:
async def _save_geodb(
*, progress: Progress, response: ClientResponse, task: TaskID
) -> None:
await asyncify(fs.add_permission)(GEODB_PATH, stat.S_IWUSR, missing_ok=True)
await fs.async_add_permission(GEODB_PATH, stat.S_IWUSR, missing_ok=True)
async with aiofiles.open(GEODB_PATH, "wb") as geodb:
async for chunk in response.content.iter_any():
await geodb.write(chunk)
+3 -3
View File
@@ -31,7 +31,7 @@ from . import fs, sort
from .http import get_response_text
from .null_context import NullContext
from .parsers import parse_ipv4
from .utils import IS_DOCKER, asyncify
from .utils import IS_DOCKER
if TYPE_CHECKING:
from .proxy import Proxy
@@ -273,10 +273,10 @@ class Settings:
)
_, _, (check_website_type, real_ip) = await asyncio.gather(
asyncify(fs.create_or_fix_dir)(
fs.async_create_or_fix_dir(
output_path, permissions=stat.S_IXUSR | stat.S_IWUSR
),
asyncify(fs.create_or_fix_dir)(
fs.async_create_or_fix_dir(
fs.CACHE_PATH,
permissions=stat.S_IRUSR | stat.S_IXUSR | stat.S_IWUSR,
),