ഓരോ aiohttp പ്രോക്സിക്കും അതിന്റേതായ സമവർത്തി ബജറ്റ് നൽകുക
aiohttp കണക്ഷൻ പൂൾ പരിധികളും പ്രതികരണ ശുദ്ധീകരണവും നിലനിർത്തിക്കൊണ്ട് തിരഞ്ഞെടുത്ത ഓരോ പ്രോക്സിക്കും നടന്നുകൊണ്ടിരിക്കുന്ന ജോലി പരിമിതപ്പെടുത്തുക.
ഒരു പ്രോക്സി പൂളിൽ വളരെ വ്യത്യസ്ത ശേഷിയുള്ള എൻഡ്പോയിന്റുകൾ ഉണ്ടാകാം. ആപ്ലിക്കേഷനിലാകെ അമ്പത് പ്രവർത്തനങ്ങൾ അനുവദിക്കുന്നത് അവയിൽ നാൽപ്പത്തൊമ്പത് ഒരേ പ്രോക്സി തിരഞ്ഞെടുക്കുന്നത് തടയുന്നില്ല.
“ഓരോ തിരഞ്ഞെടുത്ത പ്രോക്സിയിലൂടെയും പരമാവധി നാല് നടന്നുകൊണ്ടിരിക്കുന്ന പ്രവർത്തനങ്ങൾ” എന്നതാണ് നയമെങ്കിൽ, ആ നയം നേരിട്ട് പ്രകടിപ്പിക്കുക. ഓരോ പ്രോക്സി ഐഡന്റിറ്റിക്കും ഒരു സെമഫോർ സൂക്ഷിക്കുക, പ്രോക്സിയുടെ ശേഷി ഉപയോഗിക്കുന്ന ജോലിക്ക് ചുറ്റും അത് നേടുക.
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()ഈ രൂപരേഖ asyncio ഇറക്കുമതി ചെയ്തതും പ്രോക്സി URL-കൾ സാധൂകരിച്ചതും അനുമാനിക്കുന്നു. അനുവദനീയമായ പൊതു-പ്രോക്സി പാതയിലെ പൊതു അഭ്യർത്ഥനകൾക്ക്, HTTP പ്രോക്സി പട്ടിക aiohttp-യുടെ പ്രോക്സി URL-കൾക്ക് സ്ഥാനാർത്ഥികൾ നൽകുന്നു. ഒരു യഥാർത്ഥ ആപ്ലിക്കേഷൻ അതിന്റേതായ അഭ്യർത്ഥന സമയപരിധി സജ്ജീകരിക്കുകയും എത്ര പ്രതികരണ ഡാറ്റ വേണമെന്ന് തീരുമാനിക്കുകയും വേണം. ഒരു വലിയ ഫയൽ മുഴുവനായി മെമ്മറിയിലേക്ക് വായിക്കുന്നത് വേറിട്ട ഒരു വിഭവ തീരുമാനമാണ്.
ചെലവേറിയ ഭാഗത്തിന് അനുമതി സൂക്ഷിക്കുക
പ്രതികരണ ഹെഡറുകൾ വന്നയുടൻ സെമഫോർ വിടുന്നത് ഉദ്ദേശിച്ച പരിധി പരാജയപ്പെടുത്താം. സ്ട്രീമിംഗ് ബോഡി അതിനുശേഷം വളരെക്കാലം കണക്ഷൻ ഉപയോഗിച്ചേക്കാം. ബോഡി ഉപഭോഗം ചെയ്യുന്നതുവരെയോ ആപ്ലിക്കേഷന്റെ വർക്ക്ഫ്ലോ അനുസരിച്ച് പ്രതികരണം അടയ്ക്കുന്നതുവരെയോ അനുമതി സൂക്ഷിക്കുക.
നെസ്റ്റഡ് കോൺടെക്സ്റ്റ് മാനേജർമാർ ഒരു എക്സെപ്ഷൻ അല്ലെങ്കിൽ റദ്ദാക്കൽ പ്രവർത്തനം വിട്ടുപോകുമ്പോൾ ശുദ്ധീകരണം ദൃശ്യമാക്കുന്നു. സ്വമേധയാ നേടി വിജയകരമായ ഫംഗ്ഷന്റെ അടിയിൽ മാത്രം വിടുന്നത് ഒഴിവാക്കുക.
കണക്ഷൻ പരിധികൾ മറ്റൊരു ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു
aiohttp-യുടെ കണക്ടർ പരിധികൾ കണക്ടറിന്റെ രേഖപ്പെടുത്തിയ നിയമങ്ങൾ അനുസരിച്ച് കണക്ഷനുകൾ പരിമിതപ്പെടുത്തുന്നു. ആപ്ലിക്കേഷൻ സെമഫോറിനൊപ്പം അവ ഉപയോഗപ്രദമായി തുടരുന്നു. ഓരോ ലക്ഷ്യസ്ഥാനത്തിനുമുള്ള കണക്ഷൻ പരിധി, പേരുകൊണ്ട് മാത്രം, ഒരു പ്രോക്സിക്ക് അനുവദിച്ച എല്ലാ ലക്ഷ്യസ്ഥാനങ്ങളും പങ്കിടുന്ന ബജറ്റ് പ്രകടിപ്പിക്കുന്നില്ല.
സമവർത്തിയെ അഭ്യർത്ഥന നിരക്കിൽ നിന്നും വേർതിരിക്കുക. നാല് ദീർഘകാല അഭ്യർത്ഥനകളും നാല് വളരെ ചെറിയ അഭ്യർത്ഥനകളും ഒരേ സമവർത്തി വീതം ഉപയോഗിക്കുമ്പോൾ വ്യത്യസ്ത സെക്കൻഡിൽ-അഭ്യർത്ഥന നിരക്കുകൾ ഉണ്ടാക്കുന്നു. നിരക്ക് നയമുള്ള ഒരു സേവനത്തിന് വേഗത ക്രമീകരണമോ വേറിട്ട നിരക്ക് പരിമിതപ്പെടുത്തിയോ ആവശ്യമായി വന്നേക്കാം.
ലോഗുകൾക്കും മെട്രിക്കുകൾക്കും സ്ഥിരവും രഹസ്യമല്ലാത്തതുമായ ഒരു പ്രോക്സി ഐഡന്റിഫയർ തിരഞ്ഞെടുക്കുക. ക്രെഡൻഷ്യലുള്ള രണ്ട് URL-കൾ ഒരേ ശേഷി പൂളിനെ സൂചിപ്പിക്കുന്നുവെങ്കിൽ, അവ ഒരു ബജറ്റ് പങ്കിടണമോ എന്ന് തീരുമാനിക്കുക. നേരെമറിച്ച്, വ്യത്യസ്ത പോർട്ടുകളോ അക്കൗണ്ടുകളോ വേറിട്ട പരിധികളെ പ്രതിനിധീകരിക്കാം, ഓപ്പറേറ്റർ അവ അങ്ങനെ രേഖപ്പെടുത്തുമ്പോൾ.
ത്രൂപുട്ട് കുറയുമ്പോൾ, ജോലി എവിടെ കാത്തിരിക്കുന്നുവെന്ന് പരിശോധിക്കുക: നിങ്ങളുടെ സെമഫോർ, കണക്ടർ, പ്രോക്സി കണക്ഷൻ ക്രമീകരണം, അല്ലെങ്കിൽ പ്രതികരണ വായന. എല്ലാ പരിധികളും ഒരുമിച്ച് ഉയർത്തുന്നത് ആ വ്യത്യാസം ബുദ്ധിമുട്ടാക്കുകയും ക്യൂവിനെ നിങ്ങൾ നിയന്ത്രിക്കാത്ത ഒരു പ്രോക്സിലേക്ക് മാറ്റുകയും ചെയ്തേക്കാം.