{"record":{"id":"193a4b8e9a5e41f7","repo":"tonhowtf/omniget","slug":"o-servidor-est-limitando-o-acesso-http-tente-de-novo-daqui-a","errorCode":null,"errorMessage":"o servidor está limitando o acesso (HTTP {}). Tente de novo daqui a pouco","messagePattern":"o servidor está limitando o acesso \\(HTTP (.+?)\\)\\. Tente de novo daqui a pouco","errorType":"http","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/tools/blogs/mod.rs","lineNumber":173,"sourceCode":"        const TRIES: u32 = 4;\n        let mut wait = Duration::from_secs(3);\n        for attempt in 1..=TRIES {\n            self.pace().await;\n            self.requests.fetch_add(1, Ordering::Relaxed);\n            match self.client.get(url).send().await {\n                Ok(r) if r.status().is_success() => return Ok(r.text().await?),\n                Ok(r) if r.status().as_u16() == 401 || r.status().as_u16() == 403 => {\n                    return Err(anyhow!(\n                        \"acesso negado (HTTP {}). Capture os cookies da sua conta no gerenciador e tente de novo\",\n                        r.status()\n                    ));\n                }\n                Ok(r) if r.status().as_u16() == 404 => {\n                    return Err(anyhow!(\"não encontrado: {}\", url));\n                }\n                Ok(r) if r.status().as_u16() == 429 || r.status().is_server_error() => {\n                    if attempt == TRIES {\n                        return Err(anyhow!(\n                            \"o servidor está limitando o acesso (HTTP {}). Tente de novo daqui a pouco\",\n                            r.status()\n                        ));\n                    }\n                    let retry = r\n                        .headers()\n                        .get(reqwest::header::RETRY_AFTER)\n                        .and_then(|v| v.to_str().ok())\n                        .and_then(|v| v.trim().parse::<u64>().ok())\n                        .map(Duration::from_secs);\n                    tokio::time::sleep(retry.unwrap_or(wait)).await;\n                    wait *= 2;\n                }\n                Ok(r) => return Err(anyhow!(\"HTTP {} em {}\", r.status(), url)),\n                Err(e) if attempt < TRIES => {\n                    tokio::time::sleep(wait).await;\n                    wait *= 2;\n                    let _ = e;","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/tools/blogs/mod.rs#L155-L191","documentation":"On HTTP 429 or 5xx, get_text() retries with exponential backoff (with an optional Retry-After hint) up to TRIES attempts. Only when the last attempt still fails does it surface this error telling the user the server is rate limiting or broken.","triggerScenarios":"Every one of the TRIES retry attempts against the URL returned 429 or a 5xx status.","commonSituations":"Exporting large feeds too fast against Medium's rate limits; Medium incident/outage; shared IP (proxy/VPN) throttled by the server.","solutions":["Wait a few minutes and retry the export later","Reduce request volume (lower opts.limit, export fewer formats/users at once)","Remove proxies/VPNs that may share a rate-limited IP","If persistent, check the target service status page for an outage"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"match fetcher.get_text(url).await {\n    Err(e) if e.to_string().contains(\"limitando o acesso\") => {\n        tokio::time::sleep(Duration::from_secs(300)).await;\n        return fetcher.get_text(url).await;\n    }\n    other => other,\n}","preventionTips":["Respect Retry-After headers and pace requests","Reduce export size/frequency to stay under rate limits","Avoid shared/proxied IPs that are pre-throttled"],"tags":["http","rate-limit","retry"],"backgroundTag":"rate-limit-exceeded","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}