Condividi tramite


Guida alla migrazione dei plug-in Python per sessioni - Maggio 2025

SessionsPythonPlugin è stato aggiornato per utilizzare l'ultima versione (2024-10-02-preview) dell'API Sessioni Dinamiche dell'Interprete di Codice di Azure. La nuova API ha introdotto modifiche di rilievo, che si riflettono nella superficie DELL'API pubblica del plug-in.

Questa guida alla migrazione consente di eseguire la migrazione del codice esistente alla versione più recente del plug-in.

Inizializzazione del plug-in

La firma del costruttore del plug-in è stata modificata per accettare un CancellationToken come argomento della funzione authTokenProvider. Questa modifica consente di annullare il processo di generazione del token, se necessario:

// Before
static async Task<string> GetAuthTokenAsync()
{
    return tokenProvider.GetToken();
}

// After
static async Task<string> GetAuthTokenAsync(CancellationToken ct)
{
    return tokenProvider.GetToken(ct);
}

var plugin = new SessionsPythonPlugin(settings, httpClientFactory, GetAuthTokenAsync);

Metodo UploadFileAsync

La firma del UploadFileAsync metodo è stata modificata per rappresentare meglio lo scopo dei parametri:

// Before
string remoteFilePath = "your_file.txt";
string? localFilePath = "C:\documents\your_file.txt";

await plugin.UploadFileAsync(remoteFilePath: remoteFilePath, localFilePath: localFilePath);

// After
string remoteFileName = "your_file.txt";
string localFilePath = "C:\documents\your_file.txt";

await plugin.UploadFileAsync(remoteFileName: remoteFileName, localFilePath: localFilePath);

Metodo DownloadFileAsync

Analogamente, la firma del DownloadFileAsync metodo è stata modificata per rappresentare meglio lo scopo dei parametri:

// Before
string remoteFilePath = "your_file.txt";
await plugin.DownloadFileAsync(remoteFilePath: remoteFilePath);

// After
string remoteFileName = "your_file.txt";
await plugin.DownloadFileAsync(remoteFileName: remoteFileName);

Metodo ExecuteCodeAsync

La firma del ExecuteCodeAsync metodo è stata modificata per fornire un modo strutturato per lavorare con i risultati dell'esecuzione:

// Before
string result = await plugin.ExecuteCodeAsync(code: "print('Hello, world!')");

// After
SessionsPythonCodeExecutionResult result = await plugin.ExecuteCodeAsync(code: "print('Hello, world!')");
string status = result.Status;
string? executionResult = result.Result?.ExecutionResult;
string? stdout = result.Result?.StdOut;
string? stderr = result.Result?.StdErr;

Classe SessionsRemoteFileMetadata

La SessionsRemoteFileMetadata classe del modello, usata dai UploadFileAsync metodi e ListFilesAsync , è stata aggiornata per rappresentare meglio i metadati di file e directory remoti:

// Before
SessionsRemoteFileMetadata file = await plugin.UploadFileAsync(...);
string fileName = file.Filename;
long fileSize = file.Size;
DateTime? lastModified = file.LastModifiedTime;

// After
SessionsRemoteFileMetadata file = await plugin.UploadFileAsync(...);
string name = file.Name;
long? size = file.SizeInBytes;
DateTime lastModified = file.LastModifiedAt;