XX-net/XX-Net · error · NoRescourceException

no appid

Error message

no appid

What it means

NoRescourceException raised by get_host when the appid manager returns no appid. The host manager needs an appid to build '<appid>.appspot.com'; with none available it logs 'no appid', sleeps 10s to avoid hot-looping, then throws. get_sni_host and any GAE request needing a hostname will propagate it.

Source

Thrown at code/default/gae_proxy/local/host_manager.py:24


class HostManager(HostManagerBase):
    def __init__(self, config, logger):
        self.config = config
        self.logger = logger
        self.appid_manager = None

        self.sni_manager = SniManager(logger)

    def get_host(self):
        if not self.appid_manager:
            return ""

        appid = self.appid_manager.get()
        if not appid:
            self.logger.warn("no appid")
            time.sleep(10)
            raise NoRescourceException("no appid")

        return appid + ".appspot.com"

    def get_sni_host(self, ip):
        sni = self.sni_manager.get()
        host = self.get_host()

        return sni, host

View on GitHub (pinned to cfa5bc17b6)

Solutions

  1. Configure at least one valid appid (deploy your own GAE app) in the settings
  2. Restore benched appids by restarting XX-Net after fixing quota/existence issues
  3. Deploy multiple appids for redundancy
  4. Verify appids in the Google console and redeploy deleted ones
Defensive patterns

Strategy: validation

Validate before calling

from gae_proxy.local import appid_manager
if not appid_manager.appids:
    raise RuntimeError('No appid configured; set one before requesting GAE hosts')

Try / catch

try:
    host = host_manager.get_host()
except NoRescourceException:
    time.sleep(10)  # mirror internal backoff, then re-check config
    if not appid_manager.appids:
        raise
    host = host_manager.get_host()

Prevention

When it happens

Trigger: Calling get_host/get_sni_host when the appid list is empty or all appids have been benched (reported not-exist or out-of-quota via report_not_exist/report_out_of_quota).

Common situations: Fresh install with no appids configured, all configured appids removed by Google or exhausted quota, shared public appids all dead.

Related errors


AI-assisted analysis of XX-net/XX-Net@cfa5bc17b6 (2026-08-27). Data as JSON: /api/errors/bb04324f4e513202. Report an issue: GitHub.