XingangPan/DragGAN · error · IOError

Google Drive download quota exceeded -- please try again…

Error message

Google Drive download quota exceeded -- please try again later

What it means

Raised by dnnlib.util.open_url when the response body is a small HTML page containing 'Google Drive - Quota exceeded'. Google Drive caps downloads per file per day; once the cap is hit, no retries help until the quota resets. It propagates as an IOError after retries are exhausted (each retry re-hits the quota page).

Solutions

  1. Wait for the Google Drive quota to reset (usually within 24 hours) and retry
  2. Copy the file to your own Google Drive ('Make a copy' / 'Add shortcut') and download from that copy
  3. Download via a different mirror if the model author provides one (HuggingFace, direct HTTP)
  4. Upload the file to a personal host (S3/Dropbox) and pass that URL
  5. Download manually in a browser (which sometimes still works under account auth) and use the local file path

Example fix

# before
with dnnlib.open_url('https://drive.google.com/uc?id=FILEID') as f: ...

# after
# copy to your own Drive or mirror, then:
with dnnlib.open_url('https://my-mirror.example.com/model.pkl') as f: ...
Defensive patterns

Strategy: fallback

Try / catch

try:
    with dnnlib.open_url(url) as f: data = f.read()
except IOError as e:
    if 'Quota exceeded' in str(e):
        with open(local_fallback_path, 'rb') as f: data = f.read()
    else:
        raise

Prevention

When it happens

Trigger: Calling open_url (or any tool that loads a pickle from URL, like legacy.load_network_pickle) on a Google Drive file that has exceeded its daily download quota — typically a popular pretrained model shared publicly.

Common situations: Using third-party StyleGAN2 weights shared via Google Drive links that went viral; the error persists for up to ~24h until quota reset; users on shared IPs (corporate NAT/VPN) hit the cap sooner.

Related errors


AI-assisted analysis of XingangPan/DragGAN@336f120ce1 (2026-08-27). Data as JSON: /api/errors/dc1b9c7a7547d117. Report an issue: GitHub.

Appendix: source

Thrown at dnnlib/util.py:459

    with requests.Session() as session:
        if verbose:
            print("Downloading %s ..." % url, end="", flush=True)
        for attempts_left in reversed(range(num_attempts)):
            try:
                with session.get(url) as res:
                    res.raise_for_status()
                    if len(res.content) == 0:
                        raise IOError("No data received")

                    if len(res.content) < 8192:
                        content_str = res.content.decode("utf-8")
                        if "download_warning" in res.headers.get("Set-Cookie", ""):
                            links = [html.unescape(link) for link in content_str.split('"') if "export=download" in link]
                            if len(links) == 1:
                                url = requests.compat.urljoin(url, links[0])
                                raise IOError("Google Drive virus checker nag")
                        if "Google Drive - Quota exceeded" in content_str:
                            raise IOError("Google Drive download quota exceeded -- please try again later")

                    match = re.search(r'filename="([^"]*)"', res.headers.get("Content-Disposition", ""))
                    url_name = match[1] if match else url
                    url_data = res.content
                    if verbose:
                        print(" done")
                    break
            except KeyboardInterrupt:
                raise
            except:
                if not attempts_left:
                    if verbose:
                        print(" failed")
                    raise
                if verbose:
                    print(".", end="", flush=True)

    # Save to cache.

View on GitHub (pinned to 336f120ce1)