Sobes.tech
Middle

API uchun kutish (wait) qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

API testlari uchun shartlarga asoslangan aniq kutishlar ishlatiladi. Eng keng tarqalgan usullar:

  1. Polling (so'rov): Kutayotgan natija olinmaguncha yoki timeout tugaguncha API ga davriy so'rov yuboriladi.

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        API dan belgilangan holatni kutadi.
    
        Args:
            url: API ning endpoint URL si.
            expected_status: Kutayotgan HTTP holat kodi.
            timeout: Maksimal kutish vaqti sekundlarda.
            interval: Har bir urinish orasidagi interval sekundlarda.
    
        Returns:
            requests.Response: Muvaffaqiyatli bo'lsa javob obyekti, timeout bo'lsa None.
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # Yoki boshqa HTTP usuli
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"So'rovda xato: {e}") # Xatoni log qilish
            time.sleep(interval)
        return None # Timeout bo'lsa None qaytaradi
    
    # Misol uchun foydalanish
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # if response:
    #     print("Kutgan holat olindi!")
    # else:
    #     print("Holatni kutish vaqt o'tdi.")
    
  2. Long polling (uzoq so'rov): Mijoz so'rov yuboradi va server ma'lumotlar paydo bo'lgunga qadar yoki timeout tugaguncha ulanishni ochiq tutadi. Standart REST API larda kamroq qo'llaniladi, voqealar yoki WebSocket asosidagi arxitekturalarda ko'proq ishlatiladi.

  3. Webhooks (orqaga chaqirishlar): API muayyan voqea yuz berganda, mijtiga URL chaqiradi. Bu uchun mijtida ochiq va kirish mumkin bo'lgan endpoint bo'lishi kerak.

    • Amalga oshirish:
      • Webhook URL ni boshqa xizmatning API orqali ro'yxatdan o'tkazish.
      • Webhook dan keladigan HTTP POST so'rovlarini qabul qilish va ishlash uchun kod yozish.
      • Webhook orqali ma'lumotlarni asinxron tarzda kutish.

Usul tanlovi API arxitekturasi va test talablarga bog'liq. Polling ko'p hollarda eng oddiy va keng tarqalgan usul hisoblanadi.