Rilanciare operazioni asincrone in Dart e Flutter con retry

Mattepuffo's logo
Rilanciare operazioni asincrone in Dart e Flutter con retry

Rilanciare operazioni asincrone in Dart e Flutter con retry

retry è un package per Dart e Flutter che ci permette di rilanciare operazioni asincrone in automatico qualora fallissero.

In questo articolo ne vediamo un esempio in Dart.

Per installarlo:

dart pub add retry

flutter pub add retry

Qui sotto un esempio di codice in cui indichiamo massimo 4 tentativi (il default è 8) ed usiamo un url sbagliato appositamente:

import 'dart:async';
import 'dart:io';
import 'package:retry/retry.dart';

Future<void> main() async {
  final client = HttpClient();
  final url = 'https://www.google.5555';

  try {
    final rOpts = RetryOptions(maxAttempts: 4);
    final statusCode = await rOpts.retry(
      () async {
        final request = await client.getUrl(Uri.parse(url)).timeout(
              Duration(seconds: 5),
            );
        final response = await request.close().timeout(
              Duration(seconds: 5),
            );
        await response.drain();
        return response.statusCode;
      },
      retryIf: (e) => e is SocketException || e is TimeoutException,
    );

    if (statusCode == 200) {
      print('OK');
    } else {
      print('URL non raggiungibile');
    }
  } on Exception catch (e) {
    print(e);
  } finally {
    client.close();
  }
}

Enjoy!


Condividi

Commentami!