You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LoadRunner中处理每20秒重复发送相同请求的场景

Handling Polling-Based Search Workflows with Initial Empty 200 Responses

Hey, I’ve run into exactly this kind of search flow before—it’s super common in apps where the backend needs time to crunch through a complex query (think aggregating data from multiple sources, running heavy analytics, or queuing a search job that can’t finish instantly). Here’s how I’ve tackled it effectively:

  • Implement Exponential Backoff (with a Cap)
    While the app uses a fixed 20-second interval initially, sticking to that indefinitely can put unnecessary load on the server. Instead, use exponential backoff to gradually increase the wait time (up to a maximum) to reduce repeated requests. For example, start at 20s, then 30s, 45s, and cap it at 60s once you hit that threshold. Here’s a quick Python example:

    import time
    import requests
    
    def fetch_search_results(search_params):
        max_retries = 10
        current_delay = 20
        max_delay = 60
    
        for attempt in range(max_retries):
            resp = requests.post("/api/search", json=search_params)
            if resp.status_code != 200:
                print(f"Request failed on attempt {attempt+1}: {resp.status_code}")
                break
    
            data = resp.json()
            # Check if the response has actual results (adjust this check to match your API)
            if data.get("status") == "completed" and data.get("results"):
                return data
    
            # Wait before retrying, then adjust delay
            time.sleep(current_delay)
            current_delay = min(current_delay * 1.5, max_delay)
    
        # If we hit max retries
        return {"error": "Search timed out. Please try again later."}
    
  • Add Transparent User Feedback
    Don’t leave users guessing! In the frontend, show a clear loading state like "Search is processing—we’ll show results as soon as they’re ready", and update it with attempt counts if needed (e.g., "Checking for results (3/10)"). This prevents users from refreshing repeatedly or thinking the app is broken.

  • Enforce a Maximum Retry Limit
    Never poll indefinitely. Set a reasonable upper limit for retries (like 10 attempts, totaling ~5 minutes with backoff) and then surface a friendly error message if no results come through by then. This saves server resources and avoids frustrating users with endless waits.

  • Consider a Push-Based Alternative (If Possible)
    If you have control over the backend, ditch polling entirely and use WebSockets or Server-Sent Events (SSE). When a user triggers a search, the backend can send a "processing" acknowledgment immediately, then push the results directly to the frontend once they’re ready. This is more efficient for both server and client.

  • Standardize the Response Format
    Work with your backend team to add a clear status field in the 200 response (e.g., status: "processing" vs status: "completed"). This removes ambiguity—you won’t have to guess whether the response is empty because it’s still processing or because there are no results.

If you’re working with a specific tech stack (like JavaScript/React, Java, etc.), I can dive deeper into implementation details for that environment!

内容的提问来源于stack exchange,提问作者Nikhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:36:24