BaşlayınÜcretsiz başlayın

API Aracı Çağrılarını Dayanıklı Hale Getirme

Canlı ortamda, kur (döviz) sunucusunun convert_currency() aracı, kur oranı API'si yavaşsa veya erişilemiyorsa takılıp kalmamalı. Bunu azaltmak için isteğe bir zaman aşımı (timeout) ekleyecek ve ham bir istisna yerine, herhangi bir başarısızlıkta kullanıcıya kısa ve net bir hata mesajı döndürüldüğünden emin olacaksın.

Bir MCP sunucusu zaten başlatıldı ve mcp değişkeninde saklandı.

Bu egzersiz, kursun bir parçasıdır

Model Context Protocol (MCP) Giriş

Kursa Göz Atın

Egzersiz talimatları

  • API isteğini deneyecek ve istisnayı yakalayarak bir hata dönerse zarifçe başarısız olacak try-except mantığını uygula.
  • İsteğin süresiz beklememesi için requests.get() çağrısına 10 saniyelik bir zaman aşımı ekle (timeout=10).

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

@mcp.tool()
def convert_currency(amount: float, from_currency: str, to_currency: str) -> str:
    """
    Convert an amount from one currency to another using current exchange rates.

    Args:
        amount: The amount to convert
        from_currency: Source currency code (e.g., 'USD', 'EUR', 'GBP')
        to_currency: Target currency code (e.g., 'USD', 'EUR', 'GBP')

    Returns:
        A string with the conversion result and exchange rate
    """
    url = f"https://api.frankfurter.dev/v1/latest?base={from_currency}&symbols={to_currency}"
    # Implement try-except to gracefully handle errors
    ____:
        # Add a 10-second timeout so the request does not hang
        r = requests.get(url, ____=____)
        r.raise_for_status()
        data = r.json()
        rate = data["rates"].get(to_currency)
        if rate is None:
            return f"Could not find exchange rate for {from_currency} to {to_currency}"
        return f"{amount} {from_currency} = {amount * rate:.2f} {to_currency} (Rate: {rate})"
    ____ requests.exceptions.RequestException as e:
        return f"Error converting currency: {e}"

print(convert_currency(10, "USD", "EUR"))
Kodu Düzenle ve Çalıştır