Skip to content

Completely Resolve Gradio Client's Classic Error: Could not fetch config from http://127.0.0.1:7860

When using pyVideoTrans software or code to call a Gradio application, do you often encounter a cold red error line?

gradio_client.exceptions.ConnectionError: Could not fetch config from http://127.0.0.1:7860.

Don't worry, you're not alone. This is the most common "roadblock" when using gradio_client. This guide will take you from basic troubleshooting to uncovering the "culprit behind the scenes," completely conquering this error.

The Core of the Error: What Is It Saying?

The literal meaning of this error message is: "Could not fetch configuration information from http://127.0.0.1:7860."

Simply put, your client program acts like a messenger. It first needs to go to the server's address to get a "menu" (i.e., the application's configuration information, such as available APIs and input/output definitions) before it can start ordering (submitting data). This error means your messenger couldn't even get through the server's door, let alone retrieve the menu.

The root cause is 99% not with gradio_client itself, but with network communication being blocked between the client and the server.

Part 1: Basic Troubleshooting Checklist (Solves 80% of Problems)

Before diving deeper, let's go through a standard set of checks that resolve the vast majority of cases.

Step 1: Is Your Gradio Server Actually Running?

This is the most common and easily overlooked reason.

  • How to Check:

    1. Check the Terminal: Look at the terminal window where you started the Gradio application (e.g., by running python app.py). Is it still running? Did it crash with an error? A properly running server will display:
      Running on local URL:  http://127.0.0.1:7860

    1. Test with a Browser: This is the most crucial test! Directly open the server's displayed address http://127.0.0.1:7860 in your browser.
      • If you can see the Gradio interface: Congratulations, the server is healthy! The problem lies elsewhere; continue reading.
      • If the browser shows "Unable to access" or "Connection refused": This means the server didn't start successfully. Go fix your server code first to get it running properly.

Step 2: Do the Address and Port Exactly Match?

Make sure your messenger isn't going to the wrong address.

  • How to Check:

    • Server Side: Check the parameters of your app.launch(). If you wrote app.launch(server_port=8000), then the address is http://127.0.0.1:8000.
    • Client Side: Ensure the URL in Client() exactly matches the URL displayed when the server starts.
    python
    # Server is on port 7860
    # app.launch() 
    
    # Client must connect to port 7860
    from gradio_client import Client
    client = Client("http://127.0.0.1:7860/") # Correct
    # client = Client("http://localhost:7860/") # Also correct
    # client = Client("http://127.0.0.1:5010/") # Wrong!

Step 3 (Special Case): Are You Using Docker or a Virtual Machine?

Running a Gradio server inside a Docker container is a common pitfall.

  • Principle: A Docker container has its own network. The 127.0.0.1 inside the container refers to the container itself, not your computer.
  • Solution:
    1. Server Side: Must listen on 0.0.0.0 to accept connections from outside the container.
      python
      app.launch(server_name="0.0.0.0", server_port=7860)
    2. When Starting the Container: Must use the -p parameter to map the container port to the computer port.
      bash
      # Map your computer's port 7860 to the container's port 7860
      docker run -p 7860:7860 your_gradio_image
    3. Client Side: Connect to your computer's address http://127.0.0.1:7860.

The same principle applies to virtual machines.


Part 2: Uncovering the "Culprit Behind the Scenes" – The Network Proxy (VPN Software) You Didn't Expect

If you've completed all the above checks and the problem persists, you've likely encountered the same "culprit" as I did.

Final Discovery: The problem lies with running VPN or network proxy software (like Clash, V2Ray, etc.)!

Why Does Proxy Software Interfere with Local Connections?

When you enable the "System Proxy" or "Global Mode" in your proxy software, it takes over all network requests from your computer, including those sent to 127.0.0.1 (localhost).

The intended journey of this request should be: [Your client script] -> [Your operating system] -> [Your Gradio server script] (Completed instantly)

But with the system proxy enabled, it becomes: [Your client script] -> [Your operating system] -> [**Proxy software**] -> ???

When the proxy software receives a request pointing to the local machine, it might get "confused." Its main task is to forward traffic to remote servers, so it might mishandle this local request, causing it to be dropped or lost, never reaching the Gradio server listening on your machine.

This is why you can open it in the browser, but gradio_client fails! The browser might have its own proxy rules or plugins that bypass local addresses, while Python's network requests are solidly intercepted by the proxy software.

Part 3: Best Practice: Elegantly Solve the Problem Without Turning Off the Proxy

Turning off the proxy software every time is too troublesome. Fortunately, we have better methods.

This is the "set it and forget it" method. You need to tell your proxy software: "Please let all traffic accessing local addresses pass through directly."

In your proxy software's configuration file (e.g., Clash), find the rules section and add DIRECT rules for local addresses, ensuring they are placed near the top of the rule list.

For example, add this to Clash's config.yaml:

yaml
rules:
  # ... other rules ...
  - DOMAIN,localhost,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT
  # ... other rules ...

After saving and reloading the configuration, the problem is solved. Your proxy software will intelligently allow local traffic while continuing to proxy other network requests.

Solution 2: Disable the System Proxy Option in the Proxy Software

As shown, disable it in Clash:

Clear the system proxy in V2Ray:

Solution 3: Use the NO_PROXY Environment Variable (Temporary Solution)

If you just want to run the script temporarily, you can set an environment variable to tell the program not to use the proxy for this run.

  • Linux / macOS:
    bash
    export NO_PROXY="localhost,127.0.0.1"
    python your_client_script.py
  • Windows (CMD):
    cmd
    set NO_PROXY=localhost,127.0.0.1
    python your_client_script.py
  • Windows (PowerShell):
    powershell
    $env:NO_PROXY="localhost,127.0.0.1"
    python your_client_script.py

Summary: Ultimate Troubleshooting Checklist

When you encounter Could not fetch config again, check in the following order for maximum efficiency:

  1. 【Primary Check】 Am I running any VPN or network proxy with System Proxy Mode enabled? Try disabling it or setting up local direct rules.
  2. 【Browser Test】 Can I open http://127.0.0.1:7860 in the browser? (Confirm if the server is alive)
  3. 【Verify Address】 Does the URL in Client() exactly match the URL displayed when the server starts?
  4. 【Check Environment】 If using Docker, is server_name="0.0.0.0" configured and is port mapping -p set?
  5. 【Check Firewall】 Is the system firewall or antivirus software blocking Python's network connections?

We hope this detailed guide helps you clear the obstacles and makes your journey with gradio_client smooth sailing from now on!