Is modh éifeachtach é scríobadh gréasáin chun sonraí a bhaint as an ngréasán. Is fearr le go leor forbróirí an leabharlann Python a úsáid chun tionscadail scríobtha gréasáin a dhéanamh mar go bhfuil sé simplí agus éifeachtach. Mar sin féin, tá sé iontach mar atá, tá a theorainneacha ag an leabharlann iarratais. Fadhb tipiciúil amháin is féidir linn a bheith i gceist i scríobadh gréasáin is ea iarratais theip, a mbíonn eastóscadh sonraí éagobhsaí mar thoradh air go minic. San Airteagal seo, rachaimid tríd an bpróiseas chun iarrachtaí iarratais a chur i bhfeidhm i Python, ionas gur féidir leat na hearráidí HTTP a láimhseáil agus do scripteanna scríobtha gréasáin a choinneáil cobhsaí agus iontaofa.
Cuirimid ár dtimpeallacht ar bun ar dtús. Bí cinnte go bhfuil python suiteáilte agat agus aon IDE de do rogha féin. Ansin suiteáil an leabharlann iarratais mura bhfuil sé agat cheana féin.
pip install requests
Nuair a bheidh sé suiteáilte, déanaimis iarratas a sheoladh chuig sampla.com ag baint úsáide as modúl iarratais Python. Seo feidhm shimplí a dhéanann sin go díreach:
import requests
def send_request(url):
"""
Seolann sé iarratas HTTP Get chuig an URL sonraithe agus priontálann sé an cód stádais freagartha.
Parameters:
url (str): An URL chun an t -iarratas a sheoladh chuig.
"""
response = requests.get(url)
print('Response Status Code: ', response.status_code)
send_request('https://example.com')
Taispeántar an t -aschur cód thíos:
Déanaimis súil níos dlúithe ar chóid stádais HTTP chun iad a thuiscint níos fearr.
Freagraíonn an freastalaí d'iarratas HTTP le cód stádais a léiríonn toradh an iarratais. Seo an t -uafás tapaidh:
Mar shampla, ciallaíonn an cód stádais 200 gur críochnaíodh an t -iarratas chuig https://example.com. Is é an bealach atá ag an bhfreastalaí a rá, "Tá gach rud go maith anseo, d'éirigh go maith le d'iarratas".
Is féidir leis na cóid stádais seo ról a imirt freisin i mbrath bot agus a léiriú nuair a bhíonn rochtain srianta mar gheall ar iompar cosúil le bot.
Anseo thíos tá cóid earráide HTTP a tharlaíonn go príomha mar gheall ar shaincheisteanna braite agus fíordheimhnithe bot.
Lig dúinn anois meicníocht shimplí a scríobh i Python chun iarratas HTTP a dhéanamh leis an Leabharlann Iarrataí. Tá amanna ann nuair a theipeann ar iarratais líonra mar gheall ar fhadhb áirithe líonra nó ró -ualach freastalaí. Mar sin má theipeann ar ár n -iarratas, ba cheart dúinn na hiarratais seo a atriail.
Fágann an fheidhm Send_Request_With_Basic_retry_MeChanism iarratais a fháil ar URL ar leith le meicníocht bhunúsach atriallacha i bhfeidhm nach ndéanfadh ach athuair má bhíonn eisceacht nó eisceacht mar earráid nasctha ann. Dhéanfadh sé an t -iarratas a ath -uasmhéid uasta ama. Má theipeann ar gach iarracht le heisceacht den sórt sin, ardaíonn sé an eisceacht dheireanach.
import requests
import time
def send_request_with_basic_retry_mechanism(url, max_retries=2):
"""
Seolann sé iarratas HTTP GET chuig URL le meicníocht bhunúsach atreoraithe.
Parameters:
url (str): An URL chun an t -iarratas a sheoladh chuig.
max_retries (int): An líon uasta uaireanta chun an t -iarratas a atriail.
Raises:
requests.RequestException: Ardaíonn sé an eisceacht dheireanach má theipeann ar gach atriall.
"""
for attempt in range(max_retries):
try:
response = requests.get(url)
print('Response status: ', response.status_code)
break # Lúb Scoir Má éiríonn go maith leis
except requests.RequestException as error:
print(f"Attempt {attempt+1} failed:", error)
if attempt < max_retries - 1:
print(f"Retrying...")
time.sleep(delay) # Fan roimh athrá
else:
print("Max retries exceeded.")
# Athdhearbhaigh an eisceacht dheireanach má shroicheann uas-athsheachadáin
raise
send_request_with_basic_retry_mechanism('https://example.com')
Tá an mheicníocht bhunúsach athfhillte á n -oiriúnú anois chun cásanna a láimhseáil ina bhfuil an láithreán gréasáin ag iarraidh a chur i bhfeidhm meicníochtaí braite bot a bhféadfadh blocáil a bheith mar thoradh orthu. Chun aghaidh a thabhairt ar chásanna den sórt sin, ní mór dúinn an t -iarratas a athinsint go díograiseach i gcónaí, mar ní féidir leo a bheith ina mbloic bhrath bot ach d'fhéadfadh siad a bheith mar gheall ar fhadhbanna líonra nó freastalaí freisin.
Seolann an fheidhm thíos Send_Request_With_Advance_retry_Mechanism iarraidh HTTP Get Get chuig an URL a sholáthraítear le hiarrachtaí roghnacha atriallacha agus moill a athsheoladh. Déanann sé iarracht an t -iarratas a sheoladh arís agus arís eile don líon sonraithe iarrachtaí agus priontaí an cód stádais freagartha má fhaigheann an t -iarratas an freagra go rathúil. Má bhíonn earráid ann le linn na hoibríochta iarratais, priontálann sé an teachtaireacht earráide agus déanann sé é a aisghairm. Fanann sé leis an moill atreoraithe sonraithe idir gach iarracht. Má theipeann ar an iarraidh fiú tar éis líon sonraithe na n -iarrachtaí atriallacha, ardaíonn sé an eisceacht dheireanach a tháinig chun cinn.
Tá an paraiméadar moille tábhachtach mar go seachnaíonn sé an freastalaí a bhomrú le hiarratais iomadúla ag eatramh dlúth. Ina áit sin, fanann sé go mbeadh go leor ama ag an bhfreastalaí chun an t -iarratas a phróiseáil, rud a fhágann go bhfuil an freastalaí ag smaoineamh go bhfuil duine agus gan bot ag déanamh na n -iarratas. Mar sin, ba cheart moill a chur ar an meicníocht athfhillte chun ró-ualach freastalaí nó freagra freastalaí mall a sheachaint a d'fhéadfadh meicníochtaí frith-bot a spreagadh.
import requests
import time
def send_request_with_advance_retry_mechanism(url, max_retries=3, delay=1):
"""
Seolann sé iarratas HTTP GET chuig an URL sonraithe le meicníocht ardtréimhsithe.
Parameters:
url (str): An URL chun an t -iarratas a sheoladh chuig.
max_retries (int): An líon uasta uaireanta chun an t -iarratas a atriail. Is é an réamhshocrú ná 3.
delay (int): An mhoill (i soicindí) idir atrialacha. Is é an réamhshocrú ná 1.
Raises:
requests.RequestException: Ardaíonn sé an eisceacht dheireanach má theipeann ar gach atriall.
"""
for attempt in range(max_retries):
try:
response = requests.get(url)
# Eisceacht a ardú do chóid stádais 4xx nó 5xx
response.raise_for_status()
print('Response Status Code:', response.status_code)
except requests.RequestException as e:
# Priontáil teachtaireacht earráide agus uimhir iarracht má theipeann ar an iarraidh
print(f"Attempt {attempt+1} failed:", e)
if attempt < max_retries - 1:
# Priontáil an teachtaireacht athfhillte agus fan sula ndéantar é a athrá
print(f"Retrying in {delay} seconds...")
time.sleep(delay)
else:
# Má sháraigh an t-uasmhéadú, priontáil an teachtaireacht agus an eisceacht a ath-ardú
print("Max retries exceeded.")
raise
# Úsáid Sampla
send_request_with_advance_retry_mechanism('https://httpbin.org/status/404')
Seo an cód ceartaithe mar aon le tuairimí a thugann aghaidh ar na míbhuntáistí:
import requests
import time
def send_request_with_advance_retry_mechanism(url, max_retries=3, delay=1, min_content_length=10):
"""
Seolann sé iarratas HTTP GET chuig an URL sonraithe le meicníocht ardtréimhsithe.
Parameters:
url (str): An URL chun an t -iarratas a sheoladh chuig.
max_retries (int): An líon uasta uaireanta chun an t -iarratas a atriail. Is é an réamhshocrú ná 3.
delay (int): An mhoill (i soicindí) idir atrialacha. Is é an réamhshocrú ná 1.
min_content_length (int): An fad íosta an ábhair freagartha atá le breithniú bailí. Is é an réamhshocrú ná 10.
Raises:
requests.RequestException: Ardaíonn sé an eisceacht dheireanach má theipeann ar gach atriall.
"""
for attempt in range(max_retries):
try:
response = requests.get(url)
# Eisceacht a ardú do chóid stádais 4xx nó 5xx
response.raise_for_status()
# Seiceáil an bhfuil an cód stádais freagartha 404
if response.status_code == 404:
print("404 Error: Not Found")
break # Lúb Scoir le haghaidh 404 Earráid
# Seiceáil an bhfuil fad an téacs freagartha níos lú ná an fad íosta ábhar sonraithe
if len(response.text) < min_content_length:
print("Response text length is less than specified minimum. Retrying...")
time.sleep(delay)
continue # An t -iarratas a athrá
print('Response Status Code:', response.status_code)
# Má chomhlíontar coinníollacha, briseadh amach as an lúb
break
except requests.RequestException as e:
print(f"Attempt {attempt+1} failed:", e)
if attempt < max_retries - 1:
print(f"Retrying in {delay} seconds...")
time.sleep(delay)
else:
print("Max retries exceeded.")
# Athdhearbhaigh an eisceacht dheireanach má shroicheann uas-athsheachadáin
raise
# Úsáid Sampla
send_request_with_advance_retry_mechanism('https://httpbin.org/status/404')
I gcás earráidí áirithe cosúil le 429 an iomarca iarratais, is féidir le húsáid a bhaint as seachvótálaithe rothlacha cabhrú le do chuid iarratas a dháileadh agus teorainn a chur le teorainneacha a sheachaint.
Cuireann an cód thíos straitéis athfhillteach ard i bhfeidhm mar aon le húsáid proxies. Sa tslí seo, is féidir linn meicníocht a athrá ar iarratais Python a chur i bhfeidhm. Tá sé tábhachtach freisin úsáid a bhaint as seachvótálaithe scríobtha gréasáin ardchaighdeáin. Ba chóir go mbeadh algartam maith ag na seachvótálaithe seo le haghaidh uainíochta seachfhreastalaí agus linn snámha iontaofa.
import requests
import time
def send_request_with_advance_retry_mechanism(url, max_retries=3, delay=1, min_content_length=10):
"""
Seolann sé iarratas HTTP GET chuig an URL sonraithe le meicníocht ardtréimhsithe.
Parameters:
url (str): An URL chun an t -iarratas a sheoladh chuig.
max_retries (int): An líon uasta uaireanta chun an t -iarratas a atriail. Is é an réamhshocrú 3.
delay (int): An mhoill (i soicindí) idir atrialacha. Is é an réamhshocrú ná 1.
Raises:
requests.RequestException: Ardaíonn sé an eisceacht dheireanach má theipeann ar gach atriall.
"""
proxies = {
"http": "http://USER:PASS@HOST:PORT",
"https": "https://USER:PASS@HOST:PORT"
}
for attempt in range(max_retries):
try:
response = requests.get(url, proxies=proxies, verify=False)
# Eisceacht a ardú do chóid stádais 4xx nó 5xx
response.raise_for_status()
# Seiceáil an bhfuil an cód stádais freagartha 404
if response.status_code == 404:
print("404 Error: Not Found")
break # Lúb Scoir le haghaidh 404 Earráid
# Seiceáil an bhfuil fad an téacs freagartha níos lú ná 10 gcarachtar
if len(response.text) < min_content_length:
print("Response text length is less than 10 characters. Retrying...")
time.sleep(delay)
continue # An t -iarratas a athrá
print('Response Status Code:', response.status_code)
# Má chomhlíontar coinníollacha, briseadh amach as an lúb
break
except requests.RequestException as e:
print(f"Attempt {attempt+1} failed:", e)
if attempt < max_retries - 1:
print(f"Retrying in {delay} seconds...")
time.sleep(delay)
else:
print("Max retries exceeded.")
# Athdhearbhaigh an eisceacht dheireanach má shroicheann uas-athsheachadáin
raise
send_request_with_advance_retry_mechanism('https://httpbin.org/status/404')
Tá na hiarratais ar iarratas i Python ríthábhachtach chun scríobadh gréasáin éifeachtach a dhéanamh. Is féidir leis na modhanna a phléigh muid chun athsheachaidí a bhainistiú cabhrú le cosc a chur ar bhlocáil agus ar éifeachtúlacht agus iontaofacht bailiú sonraí a chosc agus a fheabhsú. Má chuirtear na teicnící seo i bhfeidhm, beidh do scripteanna scríobtha gréasáin níos láidre agus níos lú so -ghabhálach do bhrath ag córais cosanta bot.
Tuairimí: 0