Logging og feilhåndtering for boter
Bygg robuste, enkle boter ved å legge til strukturert logging og kontrollert feilhåndtering, slik at feil blir synlige og kan håndteres.
Logging og feilhåndtering for boter er en gratis leksjon i Nettskraping og boter på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Nettskraping og boter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Nettskraping og boter inneholder totalt 4 leksjoner.
Hvorfor roboter trenger logger
En bot kjører uten tilsyn, ofte etter en tidsplan. Når noe går galt, følger du ikke med. Logging etterlater et spor, slik at du kan finne ut hva som skjedde i etterkant.
Uten logger kan en stille feil gå ubemerket i flere dager.
print() er ikke logging
Nybegynnere bruker print(), men det har ingen nivåer, ingen tidsstempler og ingen enkel måte å omdirigere til en fil på. Pythons logging-modul løser alt dette.
print('something happened') # no level, no time, hard to manageSette opp logging
Konfigurer logging én gang ved oppstart. Angi et format med tidsstempel og nivå, og velg hvor utdataene skal sendes.
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s %(message)s'
)
log = logging.getLogger('bot')
log.info('Bot started')Loggnivåer
Nivåer lar deg styre detaljnivået:
DEBUGdetaljert sporing.INFOnormal fremdrift.WARNINGnoe uvanlig, men mulig å håndtere.ERRORen operasjon mislyktes.CRITICALboten kan ikke fortsette.
log.debug('fetched 12 rows')
log.warning('retrying after timeout')
log.error('login failed')Logge til en fil
For roboter uten tilsyn bør du skrive logger til en fil, slik at du kan gå gjennom dem senere. En roterende håndterer begrenser filstørrelsen.
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler('bot.log', maxBytes=1_000_000, backupCount=3)
log.addHandler(handler)Fange opp unntak
Legg risikable operasjoner i try/except, slik at én feil ikke stopper hele kjøringen. Logg feilen sammen med relevant kontekst.
try:
submit_form(data)
except Exception as e:
log.error('form submission failed: %s', e)Logge fullstendige stacktracer
Bruk log.exception i en except-blokk for å ta vare på hele stacktracen. Den er svært nyttig ved feilsøking.
try:
risky()
except Exception:
log.exception('unexpected error in risky()')Prøve på nytt etter midlertidige feil
Nettverksforstyrrelser er vanlige. Fang dem opp og prøv på nytt noen ganger før du gir opp, og logg hvert forsøk.
for attempt in range(3):
try:
fetch()
break
except ConnectionError:
log.warning('attempt %d failed, retrying', attempt + 1)
else:
log.error('all attempts failed')Feile tydelig
Stille feil er farlige. Ved kritiske feil bør du eskalere: send en e-postvarsling, skriv en markørfil eller avslutt med en kode som ikke er null, slik at en planlegger oppdager det.
import sys
if not data:
log.critical('no data scraped, aborting')
sys.exit(1)Ryddig avslutning
Frigjør alltid ressurser, også ved feil. En finally-blokk eller konteksthåndterere sørger for at nettlesere lukkes og filer tømmes, uansett hva som gikk galt.
try:
run_bot()
finally:
driver.quit()
log.info('bot finished')Strukturert loggingskontekst
Legg kontekst til hver logglinje, for eksempel gjeldende URL eller element-ID, slik at du straks vet hvilken post en melding gjelder når du går gjennom en lang logg.
log.info('scraped item %s from %s', item_id, url)Hurtigsjekk
Test forståelsen av logging og feilhåndtering for roboter.
Oppsummering
Du har lært å gjøre enkle roboter robuste: bruke logging-modulen i stedet for print, velge passende nivåer, logge til roterende filer, fange opp og logge unntak med stacktracer, prøve på nytt etter midlertidige feil, feile tydelig ved kritiske problemer og avslutte på en ryddig måte.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Logging og feilhåndtering for boter» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Nettskraping og boter, inkludert «Logging og feilhåndtering for boter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Nettskraping og boter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Logging og feilhåndtering for boter»?
Bygg robuste, enkle boter ved å legge til strukturert logging og kontrollert feilhåndtering, slik at feil blir synlige og kan håndteres. Du øver på Nettskraping og boter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Nettskraping og boter?
Ingen tidligere erfaring er nødvendig. Nettskraping og boter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Logging og feilhåndtering for boter»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Nettskraping og boter-leksjonen?
Ja. Alle Nettskraping og boter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Definering av botmål
- Automatisering av enkle skjemainnsendinger
- Planlegging av grunnleggende oppgaver
- Logging og feilhåndtering for boter