Hızlı cevap
Konut proxy ile Read timed out (ReadTimeout) ne anlama gelir?
Okuma zaman aşımı, istemcinizin yanıtın sonraki baytlarını almak için okuma zaman aşımından daha uzun süre beklediği anlamına gelir. CrawlRelay ev çıkış proxyleri üzerinden, gecikme genellikle yavaş hedeften veya yavaş ev çıkışından kaynaklanır. Bağlanma ve okuma için ayrı zaman aşımı ayarlayın, HTML sayfalar için yaklaşık 10 ve 30-60 saniye, ve zaman aşımı olan isteği yeni bir çıkışta bir kez tekrar deneyin.
Read timed out (ReadTimeout) hızlı bakış
| Hata | Read timed out (ReadTimeout) |
|---|---|
| Tür | İstemci zaman aşımı hatası |
| Gönderen | HTTP istemciniz, okuma zaman aşımı içinde veri gelmediğinde |
| Tanımlandığı yer | Client setting, no protocol status |
| Tekrar denemek ister misiniz? | Evet, yeni bir çıkışta bir ya da iki kez |
| İlk kontrol | Okuma zaman aşımınızı hedefin normal yanıt süresiyle karşılaştırın |
Read timed out (ReadTimeout) ne anlama gelir?
İstemcilerin genellikle iki zamanlayıcısı vardır. Bağlanma zaman aşımı, istemcinin proxyye bağlanmak için ne kadar bekleyeceğini sınırlar. Okuma zaman aşımı, isteği gönderdikten sonra baytlar arasında ne kadar bekleyeceğini sınırlar. Bu yüzden okuma zaman aşımı, bağlantının başarılı olduğu ama cevabın çok yavaş olduğu anlamına gelir.
Belirtilmiş zaman aşımı yoksa bazı istemciler sonsuza kadar bekler. Python requests'te varsayılan zaman aşımı yoktur, bu nedenle tek takılmış istek bir çalışanı dondurabilir.
Python, curl, Node.js ve tarayıcılarda a read timeout nasıl görünür?
Aynı başarısızlık her araçta farklı şekilde görünür. Loglarınızda aramanız gereken mesajlar şunlardır:
- Python requests:
ReadTimeout: HTTPSConnectionPool(...): Read timed out. (read timeout=10) - httpx:
httpx.ReadTimeout - Node.js:
ETIMEDOUT,ESOCKETTIMEDOUTveya kendi zamanlayıcınızdanAbortError - Playwright:
TimeoutError: page.goto: Timeout 30000ms exceeded
a read timeout neden olur?
Öncelikle en olası sebep:
- Yavaş hedef sayfa, örneğin arama sonuçları veya ağır dinamik sayfalar.
- Yavaş çıkış: ev yükleme hızı, Wi-Fi veya yoğun mobil hücre.
- Büyük indirmeler, akış halinde değil blok olarak okunması.
- Sayfa türüne göre çok sıkı ayarlanmış zaman aşımları.
- İzleme yapan tarayıcı sayfaları, asla durmayan ağ boşta bekleme ile.
a read timeout nasıl adım adım teşhis edilir?
- Proxy olmadan isteği zamanlayarak bir temel alın.
- İlk bayt ve toplam süreyi ayrı ayrı kaydedin.
- Yavaş URL’lerin yanıt boyutlarını kontrol edin.
- Tarayıcılarda kullandığınız
waitUntildurumunu kontrol edin.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URLa read timeout nasıl düzeltilir?
- Her iki zaman aşımını da ayarlayın: bağlanma yaklaşık 10 saniye, okuma HTML için 30-60 saniye, büyük dosyalar için daha fazla.
- Büyük yanıtları akışla alın ve disk üzerine parça parça yazın.
- Yalnızca HTML gerekiyorsa Playwright’te ağ boşta yerine
domcontentloadedkullanın. - Tarayıcılarda ihtiyaç duymadığınız ağır kaynakları, örneğin video, engelleyin.
- Yeni bir çıkışta bir kez tekrar deneyin, sonra URL’yi yavaş kuyrukta tutun.
import httpx
proxy = "http://USERNAME:[email protected]:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)
with httpx.Client(proxy=proxy, timeout=timeout) as client:
try:
r = client.get("https://api.ipify.org")
print(r.status_code, r.text)
except httpx.TimeoutException as exc:
print("timed out:", type(exc).__name__) # ConnectTimeout, ReadTimeout...a read timeout sonrası tekrar denenmeli mi?
Okuma zaman aşımını yeni bir çıkışta bir veya iki kez tekrar deneyin. Aynı URL sürekli zaman aşımına uğruyorsa, tüm isteklere zaman aşımı yükseltmek yerine ayrı bir yavaş kuyrukta uzun zaman aşımı verin. Yan etki çoğaltmalarına dikkat edin: yalnızca tekrarlanması güvenli olan GET gibi istekleri tekrar deneyin.
Read timed out (ReadTimeout) CrawlRelay için nasıl geçerli?
Her yeni CrawlRelay bağlantısı, oturum kimliği olmadan farklı bir konut çıkışı kullanır, bu yüzden tekrar deneme farklı ev bağlantısını da test eder. Yavaş hedefler için yapışkan oturumları kısa tutun: çıkış yavaşsa oturumdaki her istek yavaştır.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS CONNECT üzerinden) ve port 7778 (SOCKS5). Kullanıcı adı formatı: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. İlgili: 504 Gateway Timeout · Connection reset · Concurrency guide.
Read timed out (ReadTimeout): geliştiricilerin sorduğu sorular
Proxylerle kazıma için hangi zaman aşımını kullanmalıyım?
HTML sayfalar için bağlanma 10 saniye, okuma 30 saniye civarı başlayın, sonra kendi ölçümlerinize göre ayarlayın. JSON API’ler genellikle daha hızlıdır; büyük dosyalar ve yavaş arama sayfaları daha fazla zaman ister. Bunları açıkça ayarlayın: Python requests varsayılan olarak zaman aşımı yoktur.
Zaman aşımı trafiğime mal olur mu?
Sadece zaman aşımından önce aktarılan baytlar için. İlk bayt için beklerken zaman aşımına uğrayan istek neredeyse hiç veri aktaramaz. Yarımda zaman aşımına uğrayan büyük dosya ise veri aktarmıştır. Büyük dosyaları akışla alın ve mümkünse kaldığı yerden devam ettirin.
Zaman aşımı neden patlamalar halinde olur?
Çoğunlukla hedef yük altındayken yavaşlar, bazen kendi yükünüzdendir. Birden fazla çıkıştan aynı anda gelen patlamalar hedefe işaret eder; izole zaman aşımı tek yavaş çıkışa işaret eder. Bir patlama başladığında ana bilgisayarda eşzamanlılığı azaltın.
Bu referanstaki diğer proxy hataları
HTTP durum kodları
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Tarayıcı ve istemci hataları
Bağlantı ve TLS hataları
Başarısızlık durumları için dokümanlı konut proxy'ler
$0,50/GB sitesinden süresi hiç bitmeyen CrawlRelay konut proxy