Sobes.tech
Middle

Ինչպես իրականացնել սպասում (wait) API-ի համար։

sobes.tech AI

Պատասխան AI-ից

API թեստավորման համար օգտագործվում են պայմանների վրա հիմնված հստակ սպասումներ: Ամենատարածված մեթոդները:

  1. ** polling ** (սպասում): Պարբերական հարցում API-ին մինչև սպասվող արդյունքը ստանալը կամ ժամանակի ավարտը:

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        Սպասում է որոշակի կարգավիճակի API-ից:
    
        Args:
            url: API-ի վերջնակետ URL-ը:
            expected_status: Կանխատեսվող HTTP կարգավիճակի կոդը:
            timeout: Առավելագույն սպասման ժամանակը վայրկյաններով:
            interval: Միջակայքը փորձերի միջև վայրկյաններով:
    
        Returns:
            requests.Response: Պատասխան օբյեկտ հաջողության դեպքում, None ժամանակի ավարտին:
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # կամ այլ HTTP մեթոդ
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"Սխալ հարցում. {e}") # Հարցման սխալի գրանցում
            time.sleep(interval)
        return None # Վերադարձնում ենք None ժամանակի ավարտին
    
    # Օրինակ օգտագործում
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # if response:
    #     print("Սպասվող կարգավիճակը ստացվեց!")
    # else:
    #     print("Ժամանակի ավարտը սպասման ժամանակ:")
    
  2. ** long polling ** (երկարաձգված հարցում): Մարտկոցը ուղարկում է հարցում և սերվերը պահում է կապը բաց մինչև տվյալների հայտնվելը կամ ժամանակի ավարտը:

  3. ** Webhooks ** (վերադարձ զանգեր): API-ը զանգահարում է նշված URL-ը հաճախորդի կողմից որոշակի իրադարձության դեպքում:

    • Իմպլեմենտացիա:
      • Webhook URL-ի գրանցում այլ ծառայության API-ի միջոցով:
      • Կոդ գրել հաճախորդի կողմից՝ HTTP POST հարցումների ընդունում և մշակման համար:
      • Ապահովել (ավելի հաճախ ասինխրոն) տվյալների ստացումը Webhook-ի միջոցով:

Ընտրությունը կախված է API-ի ճարտարապետությունից և թեստի պահանջներից: Polling-ը ամենատարածվածն է և հեշտ է իրականացնել մեծ մասի REST API-ների համար։