# Read timed out ผ่าน proxy: สาเหตุและการตั้งเวลาที่สมเหตุสมผล

> Read timed out ผ่าน residential proxy: สาเหตุ, การตั้งเวลา connect และ read ที่เหมาะสมสำหรับสแครเปอร์, และวิธีลองใหม่โดยไม่สะสมคำขอ

- URL: https://crawlrelay.com/th/docs/errors/read-timeout/
- อัปเดตล่าสุด: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

ไคลเอนต์หมดเวลารอ: ข้อความผิดพลาดที่แม่นยำในแต่ละเครื่องมือ สาเหตุที่เป็นไปได้ตามลำดับ และวิธีแก้ไขที่ใช้งานได้

**คำตอบด่วน — Read timed out (ReadTimeout) หมายความว่าอย่างไรกับพร็อกซี?**

**Read timed out** หมายถึงไคลเอนต์ของคุณรอนานกว่าการตั้งเวลาหมดเวลาการอ่านสำหรับไบต์ถัดไปของคำตอบ ผ่าน residential proxy ของ CrawlRelay โดยปกติความล่าช้ามาจากเป้าหมายช้า หรือการเชื่อมต่อออกบ้านที่ช้า กำหนดเวลาหมดเวลาการเชื่อมต่อและอ่านแยกกัน ประมาณ 10 และ 30 ถึง 60 วินาทีสำหรับหน้า HTML และลองใหม่หนึ่งครั้งเมื่อหมดเวลาโดยใช้ exit ใหม่

## Read timed out (ReadTimeout) แบบสั้นๆ

| คุณลักษณะ | ค่า |
| --- | --- |
| ข้อผิดพลาด | Read timed out (ReadTimeout) |
| ประเภท | ไคลเอนต์หมดเวลารอ |
| ส่งโดย | HTTP client ของคุณ เมื่อไม่มีข้อมูลมาถึงภายในเวลาที่กำหนดสำหรับอ่านข้อมูล |
| กำหนดไว้ใน | Client setting, no protocol status |
| ลองใหม่อีกครั้งไหม? | ใช่ ครั้งหรือสองครั้งกับ exit ใหม่ |
| ตรวจสอบก่อน | เปรียบเทียบเวลาหมดเวลาการอ่านกับเวลาตอบสนองปกติของเป้าหมาย |

## Read timed out (ReadTimeout) หมายความว่าอย่างไร?

ไคลเอนต์มักมีตัวจับเวลาสองตัว connect timeout จำกัดเวลารอเปิดการเชื่อมต่อกับ proxy และ read timeout จำกัดเวลารอระหว่างไบต์หลังส่งคำขอแล้ว ดังนั้น read timeout หมายความว่าเชื่อมต่อสำเร็จแต่คำตอบช้า

ถ้าไม่ตั้งเวลาไว้ บางไคลเอนต์จะรอตลอดไป ใน requests ของ Python ไม่มีค่า timeout เริ่มต้น เลยอาจทำให้คำขอติดค้างจนกระทั่งกระบวนการหยุดตอบสนอง

## a read timeout เป็นอย่างไรใน Python, curl, Node.js และเบราว์เซอร์?

ข้อผิดพลาดเดียวกันนี้แสดงผลแตกต่างกันในแต่ละเครื่องมือ นี่คือข้อความที่ต้องค้นหาในบันทึกของคุณ:

- **Python requests:** `ReadTimeout: HTTPSConnectionPool(...): Read timed out. (read timeout=10)`
- **httpx:** `httpx.ReadTimeout`
- **Node.js:** `ETIMEDOUT`, `ESOCKETTIMEDOUT`, หรือ `AbortError` จากตัวจับเวลาของคุณ
- **Playwright:** `TimeoutError: page.goto: Timeout 30000ms exceeded`

## อะไรเป็นสาเหตุของ a read timeout?

โอกาสสูงสุดอันดับแรก:

- **หน้าเป้าหมายที่ช้า** เช่น ผลการค้นหาหรือหน้าที่มีไดนามิกหนัก
- **การเชื่อมต่อออกที่ช้า**: ความเร็วอัพโหลดบ้าน, Wi-Fi หรือเซลล์มือถือที่แออัด
- **ดาวน์โหลดขนาดใหญ่** ที่อ่านเต็มหน่วยความจำในทีเดียวแทนการสตรีม
- **ตั้งเวลาหมดเวลาสั้นเกินไป** สำหรับประเภทหน้า
- **หน้าเบราว์เซอร์** ที่รอ network idle บนเว็บไซต์ที่โหลดทรัคเกอร์ตลอดเวลา

## ฉันวินิจฉัย a read timeout ทีละขั้นตอนอย่างไร?

1. วัดเวลาคำขอโดยไม่มี proxy เพื่อเป็นข้อมูลพื้นฐาน
2. บันทึกเวลาได้ไบต์แรกและเวลาทั้งหมดแยกกัน
3. ตรวจสอบขนาดตอบสนองสำหรับ URL ที่ช้า
4. ในเบราว์เซอร์ ตรวจสอบเงื่อนไข `waitUntil` ที่คุณใช้

*ทดสอบ URL ที่ล้มเหลวด้วย curl (พอร์ต HTTP, โหมดละเอียด)*

```bash
# 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:PASSWORD@gw.crawlrelay.com: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_URL
```

## ฉันจะแก้ไข a read timeout อย่างไร?

- **ตั้งเวลาทั้งสองตัว**: connect ประมาณ 10 วินาที, read 30 ถึง 60 วินาทีสำหรับ HTML, มากกว่านั้นสำหรับไฟล์ใหญ่
- **สตรีมข้อมูลใหญ่** และเขียนเป็นชิ้นลงดิสก์
- **ใช้ `domcontentloaded`** แทน network idle ใน Playwright เมื่อคุณต้องการแค่ HTML
- **บล็อกทรัพยากรหนัก** ที่ไม่จำเป็นในเบราว์เซอร์ เช่น วิดีโอ
- **ลองใหม่บน exit ใหม่ครั้งหนึ่ง** แล้วโยก URL ไปคิวช้า

*Python httpx: กำหนดเวลาเชื่อมต่อ, อ่าน, เขียน และพูลอย่างชัดเจน*

```python
import httpx

proxy = "http://USERNAME:PASSWORD@gw.crawlrelay.com: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 ไหม?

ลองใหม่ read timeout หนึ่งหรือสองครั้งบน exit ใหม่ หาก URL เดิมหมดเวลาบ่อย ให้ตั้งเวลาหมดเวลานานขึ้นโดยแยกเข้าคิวช้าแทนการเพิ่มเวลาหมดเวลาทั้งหมด ระวังผลกระทบข้างเคียงจากคำขอซ้ำ ให้ retry เฉพาะคำขอที่ปลอดภัยที่จะส่งซ้ำ เช่น GET

## Read timed out (ReadTimeout) มีผลอย่างไรกับ CrawlRelay?

การเชื่อมต่อ CrawlRelay ใหม่โดยไม่มี session ID จะใช้ residential exit ที่แตกต่างกัน ดังนั้นการลองใหม่จะทดสอบการเชื่อมต่อบ้านที่แตกต่างกันด้วย เก็บ session ที่ติดอยู่ (sticky sessions) ให้สั้นสำหรับเป้าหมายที่ช้า: ถ้า exit ช้า คำขอทุกคำใน session จะช้าไปด้วย

เกตเวย์: `gw.crawlrelay.com`, พอร์ต 7777 (HTTP, HTTPS ผ่าน CONNECT) และพอร์ต 7778 (SOCKS5). รูปแบบชื่อผู้ใช้: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. ที่เกี่ยวข้อง: [504 Gateway Timeout](https://crawlrelay.com/th/docs/errors/504-gateway-timeout/) · [Connection reset](https://crawlrelay.com/th/docs/errors/connection-reset/) · [Concurrency guide](https://crawlrelay.com/th/docs/concurrency/).

## Read timed out (ReadTimeout): คำถามที่นักพัฒนาถาม

### ควรตั้งเวลาหมดเวลาเท่าไรสำหรับสแครปโดยใช้ proxy?

เริ่มต้นที่ประมาณ 10 วินาทีสำหรับการเชื่อมต่อและ 30 วินาทีสำหรับการอ่านข้อมูลบนหน้า HTML แล้วปรับตามการวัดของคุณ JSON API มักเร็วกว่า หน้าไฟล์ใหญ่และหน้าการค้นหาช้าต้องเพิ่มเวลา ตั้งเวลาหมดเวลาชัดเจน: Python requests ไม่มีค่า timeout เริ่มต้น

### เวลาหมดเวลาส่งผลต่อปริมาณทราฟฟิกไหม?

เฉพาะข้อมูลไบต์ที่ส่งก่อนเวลาหมดเวลาเท่านั้น คำขอที่หมดเวลาระหว่างรอไบต์แรกแทบไม่ได้ย้ายข้อมูลเลย โหลดไฟล์ใหญ่ที่หมดเวลาไปกลางทางย่อมย้ายข้อมูลบางส่วนได้ สตรีมไฟล์ใหญ่และต่อจากตำแหน่งที่ถูกหยุดได้ถ้าเป็นไปได้

### ทำไมเวลาหมดเวลามักเกิดเป็นช่วง?

บ่อยครั้งเนื่องจากเป้าหมายทำงานช้าลงเมื่อมีโหลด บางครั้งเป็นเพราะโหลดของคุณเอง การเกิดขึ้นพร้อมกันหลายจุดออก (exits) ชี้ไปที่เป้าหมาย; เวลาไทม์เอาต์เดี่ยว ๆ ชี้ไปที่จุดออกช้าเพียงจุดเดียว ลดความพร้อมทำงานพร้อมกันบนโฮสต์เมื่อตอนที่เกิดโหลดขึ้นพร้อมกัน

## ข้อผิดพลาดพร็อกซีอื่นๆ ในเอกสารอ้างอิงนี้

- [401 Unauthorized vs 407](https://crawlrelay.com/th/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/th/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/th/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/th/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/th/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/th/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/th/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/th/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/th/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/th/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/th/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/th/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/th/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/th/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/th/docs/errors/ssl-wrong-version-number/)

**พร็อกซีเรซิเดนเชียลที่มีเอกสารอธิบายกรณีล้มเหลว** พร็อกซีเรซิเดนเชียล CrawlRelay จาก US$0.50/GB, ปริมาณข้อมูลที่ไม่หมดอายุ [ดูราคา](https://crawlrelay.com/th/pricing/) · [เริ่มต้นอย่างรวดเร็ว](https://crawlrelay.com/th/docs/)

---

CrawlRelay: CrawlRelay คือพร็อกซีเรซิเดนเชียลหมุนเวียนพร้อมพร็อกซีมือถือ 4G/5G สำหรับนักพัฒนา เหมาะกับสแครปเปอร์และระบบจัดการข้อมูล AI: เติมเงินจ่ายตามการใช้งานจาก US$0.50/GB จ่ายด้วยคริปโต ไม่ต้องอัปโหลดบัตรประชาชน ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องถ่ายเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
