Skip to content

Error Handling

Retry, fallback, and circuit breaker patterns.

3 modules

ModuleDescription
Circuit Breakerป้องกันความล้มเหลวที่ต่อเนื่องด้วยรูปแบบ Circuit Breaker
การสำรองให้ค่าการสำรองเมื่อการดำเนินการล้มเหลว
ลองใหม่ห่อหุ้มการดำเนินการด้วยตรรกะการลองใหม่ที่กำหนดค่าได้

Modules

Circuit Breaker

error.circuit_breaker

ป้องกันความล้มเหลวที่ต่อเนื่องด้วยรูปแบบ Circuit Breaker

Parameters:

NameTypeRequiredDefaultDescription
actionobjectYes-การกระทำที่ต้องป้องกันด้วย Circuit Breaker
circuit_idstringYes-การกระทำที่ต้องป้องกันด้วย Circuit Breaker
failure_thresholdnumberNo5รหัสเฉพาะสำหรับวงจรนี้ (สำหรับการติดตามสถานะ)
failure_window_msnumberNo60000ช่วงเวลาสำหรับการนับความล้มเหลว
recovery_timeout_msnumberNo30000เวลาที่จะลองกู้คืน (สถานะครึ่งเปิด)
success_thresholdnumberNo3คำขอที่สำเร็จที่ต้องการในสถานะครึ่งเปิดเพื่อปิดวงจร
fallbackobjectNo-การกระทำทางเลือกเมื่อวงจรเปิด
fallback_valueanyNo-การกระทำทางเลือกเมื่อวงจรเปิด
track_errorsarrayNo[]ค่าคงที่ที่จะคืนเมื่อวงจรเปิด

Output:

FieldTypeDescription
__event__stringนับเฉพาะรหัสข้อผิดพลาดเหล่านี้สำหรับเกณฑ์ (ว่าง = ทั้งหมด)
resultanyเหตุการณ์สำหรับการกำหนดเส้นทาง (สำเร็จ/วงจรเปิด/สำรอง)
circuit_statestringผลลัพธ์จากการกระทำหรือการสำรอง
failure_countnumberสถานะปัจจุบันของวงจร (ปิด/เปิด/ครึ่งเปิด)
last_failure_timestringจำนวนความล้มเหลวปัจจุบันในช่วงเวลา
circuit_opened_atstringเวลาที่เกิดความล้มเหลวครั้งล่าสุด

Example: Example

yaml
action: {"module": "http.post", "params": {"url": "https://api.example.com/submit"}}
circuit_id: example-api
failure_threshold: 5
failure_window_ms: 60000
recovery_timeout_ms: 30000

Example: Example

yaml
action: {"module": "http.get", "params": {"url": "https://api.example.com/data"}}
circuit_id: data-api
failure_threshold: 3
fallback: {"module": "cache.get", "params": {"key": "data_cache"}}

Example: Example

yaml
action: {"module": "database.query", "params": {"query": "SELECT * FROM users"}}
circuit_id: database
failure_threshold: 3
fallback_value: {"users": [], "from_cache": false}

การสำรอง

error.fallback

ให้ค่าการสำรองเมื่อการดำเนินการล้มเหลว

Parameters:

NameTypeRequiredDefaultDescription
operationobjectNo-การดำเนินการหลักที่จะพยายาม
fallback_valueanyNo-การดำเนินการหลักที่จะพยายาม
fallback_operationobjectNo-ค่าคงที่ที่จะคืนเมื่อเกิดความล้มเหลว
fallback_onarrayNo[]การดำเนินการทางเลือกที่จะทำเมื่อเกิดความล้มเหลว
include_error_infobooleanNoTrueรหัสข้อผิดพลาดที่ทำให้เกิดการสำรอง (ว่าง = ข้อผิดพลาดทั้งหมด)
log_fallbackbooleanNoTrueรวมข้อมูลข้อผิดพลาดเดิมในผลลัพธ์

Output:

FieldTypeDescription
resultanyบันทึกเมื่อใช้การสำรอง
used_fallbackbooleanผลลัพธ์จากการดำเนินการหลักหรือการสำรอง
sourcestringว่ามีการใช้การสำรองหรือไม่
original_errorobjectแหล่งที่มาของผลลัพธ์ (หลัก/ค่าการสำรอง/การดำเนินการสำรอง)

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/items"}}
fallback_value: []

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/config"}}
fallback_operation: {"module": "cache.get", "params": {"key": "config_cache"}}

Example: Example

yaml
operation: {"module": "api.call", "params": {"endpoint": "/data"}}
fallback_value: {"status": "unavailable"}
fallback_on: ["NETWORK_ERROR", "TIMEOUT_ERROR"]

ลองใหม่

error.retry

ห่อหุ้มการดำเนินการด้วยตรรกะการลองใหม่ที่กำหนดค่าได้

Parameters:

NameTypeRequiredDefaultDescription
operationobjectYes-การดำเนินการที่จะลองใหม่ (ID โมดูลและพารามิเตอร์)
max_retriesnumberNo3การดำเนินการที่จะลองใหม่ (ID โมดูลและพารามิเตอร์)
initial_delay_msnumberNo1000จำนวนครั้งสูงสุดที่ลองใหม่
max_delay_msnumberNo30000ความล่าช้าเริ่มต้นก่อนลองใหม่ครั้งแรก
backoff_multipliernumberNo2.0ตัวคูณสำหรับการถอยแบบทวีคูณ (เช่น 2 จะเพิ่มความล่าช้าทุกครั้งที่ลองใหม่)
jitterbooleanNoTrueเพิ่มการสั่นแบบสุ่มเพื่อป้องกันการโหลดซ้ำ
retry_onarrayNo[]เพิ่มการสั่นแบบสุ่มเพื่อป้องกันการโหลดซ้ำ
timeout_per_attempt_msnumberNo0รายการรหัสข้อผิดพลาดที่จะลองใหม่ (ว่างเปล่า = ลองใหม่ทั้งหมด)

Output:

FieldTypeDescription
__event__stringหมดเวลาสำหรับแต่ละความพยายาม (0 สำหรับไม่หมดเวลา)
resultanyเหตุการณ์สำหรับการกำหนดเส้นทาง (สำเร็จ/หมด)
attemptsnumberเหตุการณ์สำหรับการกำหนดเส้นทาง (สำเร็จ/หมด)
total_delay_msnumberผลลัพธ์จากความพยายามที่สำเร็จ
errorsarrayจำนวนความพยายามที่ทำ

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/data"}}
max_retries: 3

Example: Example

yaml
operation: {"module": "database.query", "params": {"query": "SELECT * FROM users"}}
max_retries: 5
initial_delay_ms: 2000
backoff_multiplier: 2.0
jitter: true

Example: Example

yaml
operation: {"module": "api.call", "params": {"endpoint": "/submit"}}
max_retries: 3
retry_on: ["NETWORK_ERROR", "TIMEOUT_ERROR", "SERVICE_UNAVAILABLE"]

Released under the Apache 2.0 License.