Del via


NotebookUtils sesjonshåndtering for Fabric

Brukes notebookutils.session til å administrere livssyklusen til notatbokøkter i Microsoft Fabric. Du kan stoppe en interaktiv økt eller starte Python-tolken på nytt for opprydding, ressursstyring og feilgjenoppretting.

Følgende tabell viser tilgjengelige metoder for sesjonshåndtering:

Metode Signatur Beskrivelse
stop stop(): void Stopper den nåværende interaktive økten asynkront og frigjør ressurser. I PySpark-, Scala- og R-notatbøker godtar en valgfri detach parameter.
restartPython restartPython(): void Starter Python-tolken på nytt samtidig som Spark-konteksten beholdes. Tilgjengelig kun i Python- og PySpark-notatbøker.

Bemerkning

Metoden stop() er tilgjengelig i Python, PySpark, Scala og R-notatbøker. I PySpark-, Scala- og R-notatbøker godtar stop() en valgfri detach parameter: stop(detach=True). Når detach er True (standard), løsriver sesjonen seg fra en høy-samtidig-økt i stedet for å stoppe den helt.

Bemerkning

Metoden restartPython() er kun tilgjengelig i Python- og PySpark-notatbøker. Den er ikke tilgjengelig i Scala eller R-notatbøker.

Viktig!

I pipeline-kjøringsmodus stopper øktene automatisk etter at koden er fullført. API-et session.stop() er primært ment for interaktive økter hvor du vil stoppe økten programmessig i stedet for å klikke på stoppknappen.

Bemerkning

Metoden stop() opererer asynkront i bakgrunnen og frigjør Spark-sesjonsressurser slik at de blir tilgjengelige for andre økter i samme pool.

Stoppe en interaktiv økt

I stedet for å manuelt velge stoppknappen, kan du stoppe en interaktiv økt ved å kalle et API i koden din.

notebookutils.session.stop()

API-et notebookutils.session.stop() stopper den nåværende interaktive økten asynkront i bakgrunnen. Det stopper også Spark-økten og frigjør ressurser som er opptatt av økten, slik at de er tilgjengelige for andre økter i samme pool.

Bemerkning

Koden etter session.stop() kjører ikke. All data og variabler i minnet går tapt etter at økten avsluttes. Lagre viktig informasjon før du ringer session.stop().

Returatferd

Metoden stop() returnerer ikke en verdi. Den initierer en asynkron nedstengning av økten.

Start Python-tolken på nytt

Bruk notebookutils.session.restartPython() den for å starte Python-tolken på nytt.

Bemerkning

I PySpark (Spark) notatbøker restartPython() starter kun Python-tolken på nytt samtidig som Spark-konteksten beholdes. I Python-notatbøker, som ikke har Spark-kontekst, restartPython() starter hele Python-prosessen på nytt.

notebookutils.session.restartPython()

Returatferd

Metoden restartPython() returnerer ikke en verdi. Etter at omstarten er fullført, fortsetter kodeutførelsen i neste celle.

Husk disse hensynene:

  • I tilfellet med notebook reference run, restartPython() starter bare Python-tolken av den nåværende notatboken som refereres til, på nytt. Det påvirker ikke hovednotatboken.
  • I sjeldne tilfeller kan kommandoen feile på grunn av Spark-refleksjonsmekanismen. Å legge til et nytt forsøk kan dempe problemet.
  • Etter å ha kalt restartPython(), fortsetter kodeutførelsen i neste celle. Importer nylig installerte pakker i en påfølgende celle.

Bruksmønstre

Elegant opprydding før du stopper

Bruk en try-finally blokk for å sikre at oppryddingen skjer før økten stopper:

try:
    print("Starting data processing...")
    # ... processing logic here ...

except Exception as e:
    print(f"Processing failed: {str(e)}")
    raise

finally:
    print("Performing cleanup...")
    try:
        notebookutils.fs.unmount("/mnt/data")
    except:
        pass

    notebookutils.session.stop()

Installer pakker og start tolken på nytt

Etter å ha installert nye pakker med pip, start Python-tolken på nytt slik at pakkene er tilgjengelige:

import subprocess
import sys

packages = ["pandas==2.0.0", "numpy==1.24.0"]

print("Installing packages...")
for package in packages:
    subprocess.check_call([sys.executable, "-m", "pip", "install", package])

print("Restarting Python interpreter...")
notebookutils.session.restartPython()

Bemerkning

Etter å ha kalt restartPython(), fortsetter kodeutførelsen i neste celle. Importer de nylig installerte pakkene i en påfølgende celle.

Feilgjenoppretting med tolkeomstart

Hvis Python-tolken når en korrupt tilstand, kan du forsøke gjenoppretting ved å starte den på nytt:

def recover_from_error():
    """Attempt to recover from errors by restarting Python."""

    try:
        test_value = 1 + 1
    except Exception as e:
        print(f"Python interpreter error: {str(e)}")
        print("Restarting Python interpreter...")
        notebookutils.session.restartPython()
        return False

    return True

if not recover_from_error():
    print("Recovery attempted - check next cell")

Opprydding av ressurser før slutt

Rydd opp i monterte stier, midlertidige filer og cacher før du avslutter økten:

try:
    df = spark.range(0, 1000000)
    df.cache()
    result = df.count()
    print(f"Processing completed: {result}")

except Exception as e:
    print(f"Operation failed: {str(e)}")
    raise

finally:
    spark.catalog.clearCache()
    print("Stopping session to free resources...")
    notebookutils.session.stop()

Betinget stopp kun for interaktiv modus

Sjekk kjøringskonteksten før du stopper for å unngå unødvendige kall i pipeline-modus:

context = notebookutils.runtime.context

if not context['isForPipeline']:
    print("Interactive mode: stopping session...")
    notebookutils.session.stop()
else:
    print("Pipeline mode: session stops automatically after execution")

Tips

Lagre alltid viktige resultater – som å skrive DataFrames til lagring eller logge utdata – før du kaller session.stop() eller session.restartPython(). Begge operasjonene forkaster all minnetilstand.