Repolode
Tinche

Tinche/aiofiles

이벤트 루프를 멈추지 않도록 블로킹 로컬 파일 IO와 os, tempfile, pathlib 작업을 스레드 풀에서 실행하는 asyncio 호환 라이브러리입니다.

스타
3,270
포크
182
열린 이슈
66
마지막 커밋
4일 전

어떤 프로젝트인가요?

aiofiles는 asyncio 애플리케이션에서 로컬 파일을 읽고 쓸 수 있게 해 주는 Python 라이브러리입니다. 일반적인 파일 IO는 실행 중인 스레드를 블로킹해 이벤트 루프를 멈출 수 있습니다. aiofiles는 read, write, seek 같은 메서드가 코루틴인 비동기 파일 객체를 제공하며, 실제 작업은 스레드 풀 executor에 위임합니다.

API는 내장 open()과 거의 동일해 기존 코드를 쉽게 전환할 수 있고, async for로 파일의 각 줄을 순회할 수 있습니다. 패키지에는 tempfile 모듈과 파일 및 디렉터리를 다루는 os 함수의 비동기 래퍼, 그리고 파일 시스템 메서드를 await할 수 있는 pathlib.Path 대체 구현도 포함되어 있습니다.

pip install aiofiles로 설치할 수 있습니다. 프로젝트 라이선스는 Apache-2.0이며 테스트는 tox로 실행합니다.

핵심 기능

  • 01내장 open()과 유사한 API를 제공하는 비동기 파일 객체
  • 02블로킹 파일 작업을 스레드 풀 executor에서 실행
  • 03async for를 사용한 파일 줄의 비동기 순회
  • 04tempfile 및 일반적인 os 파일 함수의 비동기 래퍼
  • 05await 가능한 파일 시스템 메서드를 갖춘 비동기 pathlib.Path

활용 사례

  • asyncio 웹 서버에서 요청을 블로킹하지 않고 로그 및 데이터 파일 읽고 쓰기
  • 비동기 작업 안에서 임시 파일이나 디렉터리 만들기
  • pathlib 스타일 호출로 디렉터리 트리를 비동기적으로 탐색하기

빠른 시작

  1. 1

    PyPI에서 aiofiles를 설치합니다

    pip install aiofiles
  2. 2

    aiofiles.open으로 파일을 비동기적으로 열고 읽기 작업을 await합니다

사용 전 알아둘 점

  • 파일 작업은 스레드 풀에서 실행되므로 OS 수준에서 진정한 논블로킹 방식은 아닙니다.

토픽

자주 묻는 질문

aiofiles은(는) 무엇인가요?
이벤트 루프를 멈추지 않도록 블로킹 로컬 파일 IO와 os, tempfile, pathlib 작업을 스레드 풀에서 실행하는 asyncio 호환 라이브러리입니다. aiofiles는 asyncio 애플리케이션에서 로컬 파일을 읽고 쓸 수 있게 해 주는 Python 라이브러리입니다. 일반적인 파일 IO는 실행 중인 스레드를 블로킹해 이벤트 루프를 멈출 수 있습니다. aiofiles는 read, write, seek 같은 메서드가 코루틴인 비동기 파일 객체를 제공하며, 실제 작업은 스레드 풀 executor에 위임합니다.
aiofiles은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
aiofiles은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
aiofiles은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. aiofiles의 마지막 커밋은 2026년 10월 21일입니다.
aiofiles은(는) 어디에 사용할 수 있나요?
asyncio 웹 서버에서 요청을 블로킹하지 않고 로그 및 데이터 파일 읽고 쓰기 비동기 작업 안에서 임시 파일이나 디렉터리 만들기 pathlib 스타일 호출로 디렉터리 트리를 비동기적으로 탐색하기
aiofiles는 어떻게 설치하나요?
PyPI에서 aiofiles를 설치합니다: pip install aiofiles aiofiles.open으로 파일을 비동기적으로 열고 읽기 작업을 await합니다
aiofiles은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/Tinche/aiofiles

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트