Bir proksi hovuzunda çox fərqli tutumlu son nöqtələr ola bilər. Tətbiq üzrə əlli əməliyyata icazə vermək onların qırx doqquzunun eyni proksini seçməsinin qarşısını almır.

Əgər siyasət “hər seçilmiş proksi üzrə ən çoxu dörd davam edən əməliyyat”dırsa, bu siyasəti birbaşa ifadə edin. Hər proksi kimliyi üçün semafor saxlayın və onu proksinin tutumunu istehlak edən işin ətrafında əldə edin.

limits = {proxy: asyncio.Semaphore(4) for proxy in proxy_urls}

async def fetch(session, proxy, url):
    async with limits[proxy]:
        async with session.get(url, proxy=proxy) as response:
            return await response.read()

Bu eskiz asyncio modulunun idxal edildiyini və proksi URL-lərinin yoxlanıldığını fərz edir. İcazə verilmiş ictimai proksi marşrutu üzrə ictimai sorğular üçün HTTP proksi siyahısı aiohttp proksi URL-ləri üçün namizədlər təqdim edir. Real tətbiq həmçinin öz sorğu taym-autunu təyin etməli və nə qədər cavab məlumatına ehtiyacı olduğuna qərar verməlidir. Böyük faylı tamamilə yaddaşa oxumaq ayrı bir resurs qərarıdır.

İcazəni bahalı hissə üçün saxlayın

Cavab başlıqları gələn kimi semaforu buraxmaq nəzərdə tutulan limiti poza bilər. Axın edən gövdə bundan sonra uzun müddət bağlantıdan istifadə etməyə davam edə bilər. İcazəni gövdə istehlak olunana və ya cavab tətbiqin iş axınına uyğun bağlanana qədər saxlayın.

İç-içə kontekst menecerləri istisna və ya ləğv əməliyyatı tərk etdikdə təmizliyi görünən edir. Əl ilə əldə edib yalnız uğurlu funksiyanın sonunda buraxmaqdan çəkinin.

Bağlantı limitləri başqa suala cavab verir

aiohttp konnektor limitləri bağlantıları konnektorun sənədləşdirilmiş qaydalarına uyğun məhdudlaşdırır. Onlar tətbiq semaforu ilə yanaşı faydalı olaraq qalır. Hər təyinat üzrə bağlantı limiti yalnız adı ilə bir proksiyə təyin edilmiş bütün təyinatların paylaşdığı büdcəni ifadə etmir.

Paralelliyi sorğu sürətindən də ayırın. Dörd uzunmüddətli sorğu və dörd çox qısa sorğu eyni paralellik icazəsindən istifadə edir, lakin fərqli saniyədə-sorğu sürətləri yaradır. Sürət siyasəti olan xidmət tempi tənzimləmə və ya ayrı sürət məhdudlaşdırıcısı tələb edə bilər.

Jurnallar və metrikalar üçün sabit, məxfi olmayan proksi identifikatoru seçin. Əgər iki etimadnamə daşıyan URL eyni tutum hovuzuna aid edirsə, onların bir büdcəni paylaşmalı olub-olmadığını qərarlaşdırın. Əksinə, müxtəlif portlar və ya hesablar operator bunu belə sənədləşdirdikdə ayrı limitləri təmsil edə bilər.

Ötürmə qabiliyyəti düşəndə işin harada gözlədiyini yoxlayın: semaforunuz, konnektor, proksi bağlantısının qurulması və ya cavab oxunuşları. Bütün limitləri bir anda artırmaq bu fərqi çətinləşdirir və növbəni idarə etmədiyiniz proksiyə keçirə bilər.

Əlaqəli məqalələr