یک درخواست aiohttp از راه پروکسی HTTP
با aiohttp درخواستی از پروکسی HTTP بدون احراز هویت بفرستید، وضعیت را بررسی و در چرخهٔ عمر ناهمگام مشخص تمام کنید.
برای یک درخواست ناهمگام از راه پروکسی HTTP بدون احراز هویت، مسیر را روی session.get() نگه دارید. اگر لازم است aiohttp را به پروژه اضافه کنید:
uv add aiohttpنشانی مستندات زیر را با شنوندهٔ HTTP خود یا گزینهای از فهرست پروکسیهای HTTP عوض کنید. باید CONNECT به مقصد HTTPS را مجاز بداند؛ نقطهٔ صرفاً 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 را فقط زمانی انتخاب کنید که محیط ارثرسیدهٔ فرایند سیاست مسیریابی مدنظر باشد.