Starpniekserveru baseinā var būt galapunkti ar ļoti atšķirīgu kapacitāti. Atļaujot piecdesmit darbības visā lietojumprogrammā, četrdesmit deviņas no tām joprojām var izvēlēties vienu un to pašu starpniekserveri.

Ja politika ir “ne vairāk kā četras notiekošas darbības caur katru izvēlēto starpniekserveri”, izsakiet šo politiku tieši. Turiet semaforu katram starpniekservera identitātei un iegūstiet to ap darbu, kas patērē starpniekservera kapacitāti.

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()

Šajā skicē tiek pieņemts, ka asyncio ir importēts un starpniekservera URL ir validēti. Publiskiem pieprasījumiem atļautā publiskā starpniekservera maršrutā HTTP starpniekserveru saraksts nodrošina kandidātus aiohttp starpniekservera URL. Īstai lietojumprogrammai jāiestata arī savs pieprasījuma taimauts un jāizlemj, cik daudz atbildes datu tai nepieciešams. Liela faila pilnīga ielāde atmiņā ir atsevišķs resursu lēmums.

Paturiet atļauju dārgajai daļai

Semafora atbrīvošana uzreiz pēc atbildes galveņu pienākšanas var izjaukt paredzēto ierobežojumu. Straumēta pamatne var turpināt izmantot savienojumu vēl ilgi pēc tam. Paturiet atļauju, līdz pamatne ir patērēta vai atbilde ir aizvērta saskaņā ar lietojumprogrammas darbplūsmu.

Iekļautie konteksta pārvaldnieki padara tīrīšanu redzamu, kad izņēmums vai atcelšana atstāj darbību. Izvairieties no manuālas iegūšanas un atbrīvošanas tikai veiksmīgas funkcijas apakšā.

Savienojumu ierobežojumi atbild uz citu jautājumu

aiohttp savienotāja ierobežojumi ierobežo savienojumus saskaņā ar savienotāja dokumentētajiem noteikumiem. Tie joprojām ir noderīgi līdzās lietojumprogrammas semaforam. Savienojumu ierobežojums vienam galamērķim tikai ar savu nosaukumu neizsaka budžetu, ko dala visi vienam starpniekserverim piešķirtie galamērķi.

Šķiriet arī paralēlismu no pieprasījumu biežuma. Četri ilgstoši pieprasījumi un četri ļoti īsi pieprasījumi izmanto vienu un to pašu paralēlisma kvotu, bet rada atšķirīgu pieprasījumu skaitu sekundē. Pakalpojumam ar biežuma politiku var būt nepieciešama tempa regulēšana vai atsevišķs biežuma ierobežotājs.

Izvēlieties stabilu, ne slepenu starpniekservera identifikatoru žurnāliem un metrikām. Ja divi URL ar akreditācijas datiem attiecas uz vienu kapacitātes baseinu, izlemiet, vai tiem jādala viens budžets. Pretēji, dažādi porti vai konti var attēlot atsevišķus ierobežojumus, ja operators tos tā dokumentē.

Kad caurlaidspēja krīt, pārbaudiet, kur darbs gaida: jūsu semaforā, savienotājā, starpniekservera savienojuma izveidē vai atbilžu lasīšanā. Visu ierobežojumu pacelšana uzreiz padara šo atšķirību grūtāku un var pārvietot rindu uz starpniekserveri, kuru jūs nekontrolējat.

Saistītie raksti