# 저수준 API 색인

이 페이지는 모든 저수준 asyncio API를 나열합니다.

## 이벤트 루프 얻기

`asyncio.get_running_loop()` | 실행 중인 이벤트 루프를 가져오는 데 선호되는 함수.
`asyncio.get_event_loop()` | 이벤트 루프 인스턴스를 가져옵니다 (현재 또는 정책을 통해).
`asyncio.set_event_loop()` | 현재 정책을 통해 현재 이벤트 루프를 설정합니다.
`asyncio.new_event_loop()` | 새 이벤트 루프를 만듭니다.

예제

- asyncio.get_running_loop() 사용하기.

## 이벤트 루프 메서드

이벤트 루프 메서드에 관한 주 설명서 절도 참조하십시오.

수명주기

`loop.run_until_complete()` | 완료할 때까지 퓨처/태스크/어웨이터블을 실행합니다.
`loop.run_forever()` | 이벤트 루프를 영원히 실행합니다.
`loop.stop()` | 이벤트 루프를 중지합니다.
`loop.close()` | 이벤트 루프를 닫습니다.
`loop.is_running()` | 이벤트 루프가 실행 중이면 `True`를 반환합니다.
`loop.is_closed()` | 이벤트 루프가 닫혔으면 `True`를 반환합니다.
`await` `loop.shutdown_asyncgens()` | 비동기 제너레이터를 닫습니다.

디버깅

`loop.set_debug()` | 디버그 모드를 활성화 또는 비활성화합니다.
`loop.get_debug()` | 현재의 디버그 모드를 얻습니다.

콜백 예약하기

`loop.call_soon()` | 콜백을 곧 호출합니다.
`loop.call_soon_threadsafe()` | 스레드 안전한 `loop.call_soon()`의 변형입니다.
`loop.call_later()` | 주어진 시간 후에 콜백을 호출합니다.
`loop.call_at()` | 주어진 시간 에 콜백을 호출합니다.

스레드/프로세스 풀

`await` `loop.run_in_executor()` | `concurrent.futures` 실행기에서 CPU-병목이나 다른 블로킹 함수를 실행합니다.
`loop.set_default_executor()` | `loop.run_in_executor()`의 기본 실행기를 설정합니다.

태스크와 퓨처

`loop.create_future()` | `Future` 객체를 만듭니다.
`loop.create_task()` | 코루틴을 `Task`로 예약합니다.
`loop.set_task_factory()` | `loop.create_task()`가 `태스크`를 만드는데 사용하는 팩토리를 설정합니다.
`loop.get_task_factory()` | `loop.create_task()`가 `태스크`를 만드는데 사용하는 팩토리를 얻습니다.

DNS

`await` `loop.getaddrinfo()` | `socket.getaddrinfo()`의 비동기 버전.
`await` `loop.getnameinfo()` | `socket.getnameinfo()`의 비동기 버전.

네트워킹과 IPC

`await` `loop.create_connection()` | TCP 연결을 엽니다.
`await` `loop.create_server()` | TCP 서버를 만듭니다.
`await` `loop.create_unix_connection()` | 유닉스 소켓 연결을 엽니다.
`await` `loop.create_unix_server()` | Unix 소켓 서버를 만듭니다.
`await` `loop.connect_accepted_socket()` | `socket`을 `(transport, protocol)` 쌍으로 감쌉니다.
`await` `loop.create_datagram_endpoint()` | 데이터 그램 (UDP) 연결을 엽니다.
`await` `loop.sendfile()` | 트랜스포트를 통해 파일을 보냅니다.
`await` `loop.start_tls()` | 기존 연결을 TLS로 업그레이드합니다.
`await` `loop.connect_read_pipe()` | 파이프의 읽기 끝을 `(transport, protocol)` 쌍으로 감쌉니다.
`await` `loop.connect_write_pipe()` | 파이프의 쓰기 끝을 `(transport, protocol)` 쌍으로 감쌉니다.

소켓

`await` `loop.sock_recv()` | `socket`에서 데이터를 수신합니다.
`await` `loop.sock_recv_into()` | `socket`에서 데이터를 버퍼로 수신합니다.
`await` `loop.sock_sendall()` | 데이터를 `socket`으로 보냅니다.
`await` `loop.sock_connect()` | `socket`을 연결합니다.
`await` `loop.sock_accept()` | `socket` 연결을 수락합니다.
`await` `loop.sock_sendfile()` | `socket`를 통해 파일을 보냅니다.
`loop.add_reader()` | 파일 기술자가 읽기 가능한지 관찰하기 시작합니다.
`loop.remove_reader()` | 파일 기술자가 읽기 가능한지 관찰하는 것을 중단합니다.
`loop.add_writer()` | 파일 기술자가 쓰기 가능한지 관찰하기 시작합니다.
`loop.remove_writer()` | 파일 기술자가 쓰기 가능한지 관찰하는 것을 중단합니다.

유닉스 시그널

`loop.add_signal_handler()` | `signal`에 대한 처리기를 추가합니다.
`loop.remove_signal_handler()` | `signal`에 대한 처리기를 제거합니다.

서브 프로세스

`loop.subprocess_exec()` | 서브 프로세스를 스폰합니다.
`loop.subprocess_shell()` | 셸 명령으로 서브 프로세스를 스폰합니다.

에러 처리

`loop.call_exception_handler()` | 예외 처리기를 호출합니다.
`loop.set_exception_handler()` | 새로운 예외 처리기를 설정합니다.
`loop.get_exception_handler()` | 현재 예외 처리기를 가져옵니다.
`loop.default_exception_handler()` | 기본 예외 처리기 구현.

예제

- asyncio.get_event_loop() 와 loop.run_forever() 사용하기.

- loop.call_later() 사용하기.

- `loop.create_connection()`을 사용하여 메아리 클라이언트 구현하기.

- `loop.create_connection()`을 사용하여 소켓 연결하기.

- add_reader()를 사용하여 FD에서 읽기 이벤트 관찰하기.

- loop.add_signal_handler() 사용하기.

- loop.subprocess_exec() 사용하기.

## 트랜스포트

모든 트랜스포트는 다음과 같은 메서드를 구현합니다:

`transport.close()` | 트랜스포트를 닫습니다.
`transport.is_closing()` | 트랜스포트가 닫히고 있거나 닫혔으면 `True`를 반환합니다.
`transport.get_extra_info()` | 트랜스포트에 대한 정보를 요청합니다.
`transport.set_protocol()` | 새 프로토콜을 설정합니다.
`transport.get_protocol()` | 현재 프로토콜을 돌려줍니다.

데이터를 받을 수 있는 트랜스포트 (TCP 및 유닉스 연결, 파이프 등). `loop.create_connection()`, `loop.create_unix_connection()`, `loop.connect_read_pipe()` 등의 메서드에서 반환됩니다:

트랜스포트 읽기

`transport.is_reading()` | 트랜스포트가 수신 중이면 `True`를 반환합니다.
`transport.pause_reading()` | 수신을 일시 정지합니다.
`transport.resume_reading()` | 수신을 재개합니다.

데이터를 전송할 수 있는 트랜스포트 (TCP와 유닉스 연결, 파이프 등). `loop.create_connection()`, `loop.create_unix_connection()`, `loop.connect_write_pipe()` 등의 메서드에서 반환됩니다:

트랜스포트 쓰기

`transport.write()` | 데이터를 트랜스포트에 씁니다.
`transport.writelines()` | 버퍼들을 트랜스포트에 씁니다.
`transport.can_write_eof()` | 트랜스포트가 EOF 전송을 지원하면 `True`를 반환합니다.
`transport.write_eof()` | 버퍼 된 데이터를 플러시 한 후 닫고 EOF를 보냅니다.
`transport.abort()` | 즉시 트랜스포트를 닫습니다.
`transport.get_write_buffer_size()` | 쓰기 흐름 제어를 위한 높은 수위와 낮은 수위를 반환합니다.
`transport.set_write_buffer_limits()` | 쓰기 흐름 제어를 위한 새로운 높은 수위와 낮은 수위를 설정합니다.

`loop.create_datagram_endpoint()`에서 반환된 트랜스포트:

데이터 그램 트랜스포트

`transport.sendto()` | 데이터를 원격 피어로 보냅니다.
`transport.abort()` | 즉시 트랜스포트를 닫습니다.

서브 프로세스에 대한 저수준 트랜스포트 추상화. `loop.subprocess_exec()` 와 `loop.subprocess_shell()`가 반환합니다:

서브 프로세스 트랜스포트

`transport.get_pid()` | 서브 프로세스의 프로세스 ID를 돌려줍니다.
`transport.get_pipe_transport()` | 요청한 통신 파이프 (stdin, stdout 또는 stderr)에 대한 트랜스포트를 반환합니다.
`transport.get_returncode()` | 서브 프로세스 반환 코드를 돌려줍니다.
`transport.kill()` | 서브 프로세스를 죽입니다.
`transport.send_signal()` | 서브 프로세스에 시그널을 보냅니다.
`transport.terminate()` | 서브 프로세스를 중지합니다.
`transport.close()` | 서브 프로세스를 죽이고 모든 파이프를 닫습니다.

## 프로토콜

프로토콜 클래스는 다음 콜백 메서드를 구현할 수 있습니다:

`callback` `connection_made()` | 연결이 이루어질 때 호출됩니다.
`callback` `connection_lost()` | 연결이 끊어지거나 닫힐 때 호출됩니다.
`callback` `pause_writing()` | 트랜스포트 버퍼가 높은 수위를 초과할 때 호출됩니다.
`callback` `resume_writing()` | 트랜스포트 버퍼가 낮은 수위 아래로 내려갈 때 호출됩니다.

스트리밍 프로토콜 (TCP, 유닉스 소켓, 파이프)

`callback` `data_received()` | 어떤 데이터가 수신될 때 호출됩니다.
`callback` `eof_received()` | EOF가 수신될 때 호출됩니다.

버퍼 된 스트리밍 프로토콜

`callback` `get_buffer()` | 새로운 수신 버퍼를 할당하기 위해서 호출됩니다.
`callback` `buffer_updated()` | 수신된 데이터로 버퍼가 갱신될 때 호출됩니다.
`callback` `eof_received()` | EOF가 수신될 때 호출됩니다.

데이터 그램 프로토콜

`callback` `datagram_received()` | 데이터 그램이 수신될 때 호출됩니다.
`callback` `error_received()` | 이전의 송신이나 수신 연산이 `OSError`를 일으킬 때 호출됩니다.

서브 프로세스 프로토콜

`callback` `pipe_data_received()` | 자식 프로세스가 stdout 이나 stderr 파이프에 데이터를 쓸 때 호출됩니다.
`callback` `pipe_connection_lost()` | 자식 프로세스와 통신하는 파이프 중 하나가 닫힐 때 호출됩니다.
`callback` `process_exited()` | 자식 프로세스가 종료할 때 호출됩니다.

## 이벤트 루프 정책

정책은 `asyncio.get_event_loop()`와 같은 함수의 동작을 변경하는 저수준 메커니즘입니다. 자세한 내용은 주 정책 절을 참조하십시오.

정책 액세스하기

`asyncio.get_event_loop_policy()` | 현재 프로세스 전반의 정책을 돌려줍니다.
`asyncio.set_event_loop_policy()` | 새로운 프로세스 전반의 정책을 설정합니다.
`AbstractEventLoopPolicy` | 정책 객체의 베이스 클래스.