HTTP 프록시를 통해 aiohttp 요청 한 번 보내기
인증 없는 HTTP 프록시로 aiohttp 요청을 보내고 상태를 확인한 뒤 명시적인 비동기 수명 주기 안에서 마무리하세요.
인증 없는 HTTP 프록시로 비동기 요청 한 번을 보내려면 session.get()에 경로를 지정하세요. 필요하면 프로젝트에 aiohttp를 추가하세요.
uv add aiohttp아래 문서용 주소를 자신의 HTTP 수신 엔드포인트나 HTTP 프록시 목록의 후보로 바꾸세요. HTTPS 목적지로의 CONNECT를 허용해야 합니다. SOCKS 전용 엔드포인트에는 이 proxy 인수 대신 적절한 커넥터가 필요합니다.
import asyncio
import aiohttp
async def main():
timeout = aiohttp.ClientTimeout(total=15, connect=5)
async with aiohttp.ClientSession(
timeout=timeout,
trust_env=False,
) as session:
async with session.get(
"https://example.com/",
proxy="http://203.0.113.10:8080",
) as response:
print(response.status)
print((await response.text())[:200])
asyncio.run(main())
요청은 HTTP 상태와 응답 텍스트의 처음 200자를 출력합니다. 여기서는 403이나 429도 확인 가능한 응답으로 남습니다. 앱이 실패 상태를 예외로 바꿔야 한다면 response.raise_for_status()를 호출하세요. 비동기 컨텍스트 관리자는 블록이 끝나면 세션과 응답을 닫으며 예외가 발생해도 마찬가지입니다.
15초의 total 한도는 요청 작업을 포함합니다. 5초의 connect 한도에는 풀에서 사용 가능한 연결을 기다리는 시간도 포함되므로 풀이 바쁘면 새 소켓을 열기도 전에 한도를 소진할 수 있습니다. 단일 호출을 동시 검사로 바꿀 때 중요한 차이입니다.
trust_env=False는 예제의 경로를 명시적으로 유지합니다. aiohttp는 기본적으로 프록시 환경 변수를 찾지 않습니다. 다른 터미널에서 변수를 내보내도 이 호출은 설정되지 않습니다. 프로세스가 상속받은 환경이 의도한 라우팅 정책일 때만 trust_env=True를 선택하세요.