PYTHON

สง่างาม. ยืดหยุ่น. ทรงพลัง.

สัตว์โทเทม
ของแบ็กเอนด์คุณ
จะเป็นอะไร?

เราสร้างระบบแบ็กเอนด์ที่แข็งแกร่ง ปลอดภัย ขยายได้ และออกแบบเพื่อประสิทธิภาพสูงสุด

RUST

ปลอดภัย. รวดเร็ว. ทำงานพร้อมกัน.

01 สองภาษา ไม่ใช่ห้า

หนึ่งกองที่เลือกมาโดยตั้งใจ

เอเจนซี่ที่พูดได้หลายภาษานั้นฟังดูดีในสไลด์นำเสนอ แต่ในกระบวนการผลิตจริง หมายถึงระบบสร้างสามแบบ ค่าว่างเปล่าสี่รูปแบบ และสุสานของบริการที่ดูแลเพียงครึ่งเดียว เราเลือก สองภาษาที่ครอบคลุม 95% ของงานจริง — และเราเก่งมากในทั้งสองภาษา

เส้นทางความร้อน · ระบบ · ความปลอดภัย

สนิม

9.6 คะแนนความเหมาะสมภายใน

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

เมื่อเราเอื้อมมือไปหามัน

  • ระบบชำระเงินและทุกสิ่งที่เกี่ยวข้องกับเงินหรือข้อมูลส่วนบุคคล
  • เกตเวย์ API แบบร้อนพร้อม SLA ระดับห้าเก้า
  • เครื่องยนต์จับคู่ที่มีความหน่วงต่ำ, การซื้อขาย, แบบเรียลไทม์
  • โมดูล WebAssembly ที่ถูกส่งไปยังเบราว์เซอร์
  • เครื่องมือ CLI และดีมอนที่ต้องเริ่มต้นภายในไม่กี่มิลลิวินาที

การแลกเปลี่ยนที่เราจะไม่แสร้งทำเป็นไม่มี

  • การเตรียมความพร้อมสำหรับพนักงานใหม่: ~2–4 สัปดาห์จนถึงการทำงานอย่างมีประสิทธิภาพ
  • เวลาในการคอมไพล์บนพื้นที่ทำงานขนาดใหญ่ (เราได้แก้ไขด้วย sccache แล้ว)
  • ระบบนิเวศที่อายุน้อยกว่า Java — มีความสมบูรณ์ในจุดที่สำคัญ
กาว · ข้อมูล · ML · ความเร็ว

ไพธอน

9.3 คะแนนความเหมาะสมภายใน

เส้นทางที่เร็วที่สุดจากไวท์บอร์ดสู่ระบบที่ใช้งานได้จริง ระบบนิเวศที่สมบูรณ์ที่สุดบนโลก สำหรับข้อมูล, ML และการทำงานอัตโนมัติ Python สมัยใหม่ — 3.12, uv, ruff, pydantic, FastAPI — เป็นภาษาที่แม่นยำ มีประเภทข้อมูลชัดเจน และรวดเร็วเพียงพอสำหรับสิ่งที่คุณต้องการส่วนใหญ่

เมื่อเราเอื้อมมือไปหามัน

  • เครื่องมือภายใน, แดชบอร์ด, แผงควบคุมผู้ดูแลระบบ
  • ETL, ท่อข้อมูล, Airflow / Dagster / Prefect
  • ML — การฝึกอบรม, การให้บริการ, การประเมินผล
  • ระบบอัตโนมัติและการเชื่อมต่อกับ API ของผู้ขาย
  • MVP ที่จะเปิดตัวในไตรมาสนี้ไม่ใช่ปีหน้า

การแลกเปลี่ยนที่เราจะไม่แสร้งทำเป็นไม่มี

  • ประสิทธิภาพการทำงานแบบแกนเดียวช้ากว่า Rust 20–50 เท่า
  • หน่วยความจำต่อคำขอที่สูงขึ้น — เป็นอันตรายถึงชีวิตสำหรับบางภาระงาน
  • การพิมพ์แบบไดนามิกสร้างปัญหาเมื่อไม่มี mypy / pydantic ที่เข้มงวด
สนิมในที่ที่ไม่ควรมีนั้น มีราคาแพง Pythonในกรณีที่มีการจัดส่งล่าช้าและมีค่าใช้จ่ายสูง หนึ่งทีม ไม่มีหลักการตายตัว
02 จาก → ถึง

อะไรเปลี่ยนแปลงเมื่อคุณย้ายระบบ

เลือกภาษาต้นทาง แล้วดูผลกระทบของการย้ายไปยัง Rust หรือ Python ตัวเลขเหล่านี้เป็นค่ากลางจากโครงการย้ายระบบ 40 โครงการล่าสุดของเรา ไม่ใช่คำโฆษณาทางการตลาด

Rust vs Python vs C / C++

ผลลัพธ์ทางวิศวกรรมในโลกจริงเปรียบเทียบกับ stack ต้นทางที่เลือก

Rust Python C / C++ baseline

สัญญาณระดับ stack

ปัจจัยเชิงคุณภาพทางวิศวกรรมที่สำคัญนอกเหนือจากตัวเลขประสิทธิภาพการทำงาน

เส้นประสีเทาแสดง stack ต้นทางที่เลือก Rust และ Python วัดเทียบกับเส้นฐานนั้น ไม่ใช่เทียบกันเอง

วิธีที่เราวัดตัวเลขเหล่านี้

ค่ากลางจาก 40 โครงการย้ายระบบที่เสร็จสมบูรณ์ระหว่างปี 2023 ถึง 2026 วัด throughput ที่ชั้นแอปพลิเคชัน (end-to-end p50 ภายใต้ภาระงานจริง ไม่ใช่ microbenchmark) หน่วยความจำคือ RSS ในสภาวะสมดุล ค่าใช้จ่ายคือการคำนวณรายเดือนแบบ on-demand บน AWS/GCP โดยเงื่อนไขอื่นเท่ากัน ผลลัพธ์แต่ละโครงการแตกต่างกัน — เราเผยแพร่โครงการที่ไม่เป็นไปตามแผนด้วยเมื่อมีการร้องขอ

03 ตัวเลขที่ไม่มีเครื่องหมายดอกจัน

คำขอต่อวินาทีภายใต้ภาระงานจริง

ภาระงานเหมือนกัน — ตรวจสอบ JSON → query Postgres → render — วัดบนเครื่อง AMD Ryzen 7 เครื่องเดียว นี่ไม่ใช่ microbenchmark แหล่งที่มา & วิธีการ ↓

  1. 1 Rust · Axum
    21,030 req/s
  2. 2 C# .NET · ASP.NET Core
    14,707 req/s
  3. 3 Node.js · Fastify
    9,340 req/s
  4. 4 C++ · Drogon
    7,200 req/s
  5. 5 Go · Gin
    3,546 req/s
  6. 6 Python · FastAPI (Uvicorn)
    1,185 req/s
  7. 7 PHP · Laravel
    299 req/s

อ่านให้ถูกต้อง: Python อยู่ใกล้ด้านล่างของกราฟนี้ และนั่นก็ไม่เป็นไร เราไม่เรียกใช้ FastAPI บน hot path เราใช้มันในกรณีที่ 1,185 req/s มากกว่าที่ภาระงานต้องการอยู่แล้วถึง ~10× และชั่วโมงทำงานของวิศวกรมีค่ามากกว่ารอบการทำงานของ CPU วิธีการ: AMD Ryzen 7, Linux, Docker, instance เดียว, framework ยอดนิยมหนึ่งตัวต่อภาษา ตัวเลขเป็นค่าเฉลี่ยจากหลายรอบการทดสอบ

05 ต้นทุนที่แท้จริงของโค้ดที่เสียหาย

การหยุดให้บริการที่แท้จริงทำให้คุณเสียค่าใช้จ่ายอะไรบ้าง

"ห้าเก้า" ไม่ใช่การตลาด ด้านล่างนี้คือต้นทุนของการหยุดทำงานที่ไม่คาดคิดเป็นเวลาหนึ่งชั่วโมง ตามอุตสาหกรรม — พร้อมแหล่งที่มา เราสร้าง Rust ในที่ที่ตัวเลขเหล่านี้มีอยู่

ค่าใช้จ่ายที่เกิดขึ้นตั้งแต่คุณเปิดส่วนนี้
การเงิน / การดูแลสุขภาพ 0 บาท ประมาณ $83,000 ต่อนาที · $5,000,000 ต่อชั่วโมง
ยานยนต์ 0 บาท ประมาณ $38,000 ต่อนาที · $2.3 ล้านต่อชั่วโมง
องค์กรขนาดใหญ่ 0 บาท 23,750 ดอลลาร์/นาที · 1.4 ล้านดอลลาร์/ชั่วโมง
องค์กรขนาดกลาง 0 บาท ประมาณ $5,000 ต่อนาที · $300,000 ต่อชั่วโมง
การเงินและการดูแลสุขภาพ มากกว่า 5 ล้านดอลลาร์ ต่อชั่วโมง

กลุ่มอุตสาหกรรมที่มีความเสี่ยงสูงที่สุด แพลตฟอร์มการซื้อขาย ระบบการชำระเงิน และระบบทางคลินิก สามารถสูญเสียมากกว่า 5 ล้านดอลลาร์ต่อชั่วโมงในกรณีที่เกิดการหยุดชะงักอย่างรุนแรง — ก่อนที่จะนับรวมค่าใช้จ่ายด้านกฎระเบียบหรือการฟ้องร้องใดๆ เลย

ที่มา: การศึกษา Fortune 500 ประจำปี 2024 โดย Gartner; ต้นทุนการหยุดทำงานรายชั่วโมงประจำปี 2024 โดย ITIC
การผลิตยานยนต์ 2.3 ล้านดอลลาร์ / ชั่วโมง

สายการผลิตที่หยุดทำงานจะสูญเสียเงินประมาณ 640 ดอลลาร์ต่อวินาที การหยุดให้บริการของ CrowdStrike ในเดือนกรกฎาคม 2024 ทำให้ Delta Air Lines เพียงสายการบินเดียวสูญเสียเงิน 380 ล้านดอลลาร์ในระยะเวลาเพียงห้าวัน

แหล่งที่มา: การวิเคราะห์อุตสาหกรรมปี 2025 ของกลุ่มเออร์วูด; การวิเคราะห์หลังเหตุการณ์ของแอนไทเธซิส คราวด์สไตรค์
องค์กรขนาดใหญ่ (เฉลี่ย) 1.4 ล้านดอลลาร์ / ชั่วโมง

ตัวเลขของ BigPanda สำหรับองค์กรขนาดใหญ่ในปี 2024:$23,750 ต่อนาที ITIC รายงานว่า41%ขององค์กรขนาดใหญ่สูญเสียเงินระหว่าง $1M ถึง $5M ต่อชั่วโมง ของการหยุดทำงาน

แหล่งที่มา: งานวิจัย BigPanda ปี 2024; ITIC รายงานประจำปีครั้งที่ 11 เรื่องต้นทุนต่อชั่วโมงของการหยุดทำงาน
โกลบอล 2000 (ออกซ์ฟอร์ด อีโคโนมิกส์) 400,000 ล้านดอลลาร์สหรัฐ / ปี

ต้นทุนแฝงทั้งหมดจากการหยุดทำงานที่ไม่คาดคิดในบริษัทใหญ่ที่สุด 2,000 แห่งทั่วโลก ตามการศึกษาของ Oxford Economics ปี 2024 — โดยเฉลี่ยมีผลกระทบต่อบริษัทละ200 ล้านดอลลาร์ เมื่อรวมรายได้ ผลผลิต และการแก้ไขปัญหาเข้าด้วยกัน

แหล่งที่มา: Oxford Economics 2024, "ต้นทุนที่ซ่อนอยู่ของเวลาหยุดทำงาน".
ขนาดกลางและใหญ่ (ชั่วโมงปกติ) $300,000+ / ชั่วโมง

การสำรวจของ ITIC ประจำปี 2024: กว่า90%ขององค์กรขนาดกลางและขนาดใหญ่ในปัจจุบัน ประเมินความเสียหายจากการหยุดทำงานโดยไม่คาดคิดเพียงหนึ่งชั่วโมงสูงกว่าเกณฑ์ขั้นต่ำนี้ — ไม่รวมค่าปรับทางกฎหมาย แพ่ง หรือข้อบังคับต่าง ๆ

แหล่งที่มา: รายงานต้นทุนการหยุดทำงานรายชั่วโมง ITIC 2024
ขนาดเล็กและขนาดกลาง (SMB) 25,000–150,000 ดอลลาร์สหรัฐ / ชั่วโมง

การศึกษาความร่วมมือระหว่าง ITIC / Calyptix ประจำปี 2025 พบว่า SMB หลายแห่งสูญเสียเงินจำนวนนี้ต่อชั่วโมง; Siemens รายงานว่า SME ที่ประสบปัญหาการหยุดชะงักสามารถสูญเสียเงินได้สูงถึง$150,000 ต่อชั่วโมง เหตุการณ์การหยุดชะงักเฉลี่ยใช้เวลา87 นาที

แหล่งที่มา: ITIC + Calyptix 2025; Siemens True Cost of Downtime 2024.
06 ผลงานที่คัดสรร

สามโครงการ สามไฟที่แตกต่างกัน

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

  1. กรณี 01 ไพธอน ฐานข้อมูล คริปโต GDPR

    คลังข้อมูลฟินเทค:เล็กลง 4 เท่า เร็วขึ้น 5.5 เท่า รองรับมาตรฐานสากลทั่วโลก

    ลูกค้าได้แบกรับคลัสเตอร์ Postgres ขนาด 1.8 TB ที่บวมไปด้วยคอลัมน์เก่า, ดัชนีที่ตายแล้ว, และ BLOB ที่เข้ารหัสแบบ inline ซึ่งได้เติบโตขึ้นเป็นเวลาเจ็ดปี การเข้ารหัสทำงานบนไลบรารีที่ถูกยกเลิกไปแล้วซึ่งถูกทำเครื่องหมายในรายงานการตรวจสอบสามฉบับแยกกัน ความเสี่ยงด้านกฎระเบียบเป็นเรื่องจริง; ผู้ตรวจสอบกำลังเฝ้าระวัง

    สิ่งที่เราทำ

    • ตรวจสอบโครงสร้างทั้งหมด + การใช้งาน, ลบคอลัมน์และดัชนีที่ไม่ใช้งาน, แนะนำการจัดแบ่งที่เหมาะสม
    • ย้ายระบบท่อส่งคริปโตจากไลบรารีเก่าไปยังสแต็ก AEAD ที่ทันสมัยและผ่านการตรวจสอบแล้ว พร้อมการหมุนเวียนกุญแจ
    • แปลงการเข้ารหัส BLOB แบบฝังในเนื้อหาเป็นการเข้ารหัสแบบซองจดหมายที่อ้างอิงพร้อม KMS เฉพาะ
    • จัดให้สอดคล้องกับการเก็บรักษาข้อมูลและการเข้าถึงข้อมูลส่วนบุคคลตามข้อกำหนดของ GDPR, CCPA และ APPI
    ผลลัพธ์

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

  2. กรณี 02 สนิม C++ → Rust ความปลอดภัย การจัดเก็บ

    บริการ C++ เขียนใหม่ด้วย Rust:แก้ไขบั๊กระดับ CVE กว่า 100 รายการภายใน 9 สัปดาห์

    บริการประมวลผลไฟล์ที่ผู้ใช้ใช้งานในภาษา C++ ซึ่งเกิดข้อขัดข้องทุก 4–5 วัน และ ได้รับการแก้ไขในตำแหน่งเดิมทุกครั้ง การตรวจสอบของเราพบข้อบกพร่องจริงมากกว่า 100 รายการ: ช่องโหว่ที่ทำให้เกิดการปฏิเสธการให้บริการ (Denial-of-Service) บัฟเฟอร์ล้น การจัดการคำขอที่ไม่จำกัดขอบเขต ปัญหา 503 ในช่วงชั่วโมงเร่งด่วนกลายเป็นเรื่องปกติประจำสัปดาห์ ในด้านการจัดเก็บข้อมูล การอัปโหลดของผู้ใช้ได้สะสมกลายเป็นกองไฟล์ซ้ำซ้อนที่กินพื้นที่บักเก็ต จนเต็ม

    สิ่งที่เราทำ

    • เขียนใหม่ทั้งหมดด้วย Rust (axum + tokio) พร้อมการตรวจสอบข้อมูลขาเข้าอย่างเข้มงวดและจำกัดทรัพยากรอย่างชัดเจน
    • การทดสอบตามคุณสมบัติ +การทดสอบแบบสุ่มข้อมูลผ่านทุกตัวแยกวิเคราะห์และขอบเขตรูปแบบข้อมูล
    • ชั้นการจัดเก็บข้อมูลที่อ้างอิงเนื้อหาพร้อมการลบข้อมูลซ้ำออกในขณะเขียน
    • การเปิดตัวแบบ Blue-green หลังช่วงเวลาการรวมระบบ 4 ชั่วโมง โดยไม่มีการหยุดให้บริการ
    ผลลัพธ์

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

  3. เคส 03 สนิม ไพธอน eBPF / XDP CRM · ผู้ใช้ 4,000 คน

    ระบบ CRM สำหรับองค์กร, สร้างใหม่:18 เซิร์ฟเวอร์ → 5, ลดค่าใช้จ่ายลง 60%+

    ระบบ CRM ภายในที่ให้บริการผู้ใช้มากกว่า 4,000 คน ครอบคลุม IAM, SOC, การบันทึกข้อมูลแบบรวมศูนย์, แชท, การแชร์ไฟล์, VoIP และข้อมูลที่เข้ารหัสแบบ end-to-end มีเซิร์ฟเวอร์ 18 เครื่อง, Cloudflare บน ยอด และค่าใช้จ่ายคลาวด์ที่เพิ่มขึ้นเรื่อย ๆ โดยไม่คำนึงถึงจำนวนพนักงาน เราได้สร้างเส้นทาง ร้อนขึ้นใหม่ใน Rust, ยังคงใช้ Python ในชั้นการรวมและการรายงาน, และวาง ตัวกรอง eBPF/XDP ไว้ตรงหน้าการเข้า.

    สิ่งที่เราทำ

    • บริการ Rust สำหรับการตรวจสอบสิทธิ์ (IAM), การส่งข้อความแบบเรียลไทม์, การส่งสัญญาณ VoIP, การถ่ายโอนไฟล์
    • Python สำหรับส่วนติดต่อผู้ดูแลระบบ, การรายงาน, การเชื่อมโยงเหตุการณ์ SOC, การผสานรวมกับ API ของผู้ให้บริการ
    • eBPF/XDP บอทและการกรองการใช้งานที่ไม่เหมาะสมที่เคอร์เนล — แทนที่ Cloudflare สำหรับงานโหลดนี้
    • เขียนใหม่ระบบบันทึกข้อมูลแบบโครงสร้างโดยใช้โครงสร้างข้อมูลแบบไม่คัดลอกข้อมูล
    ผลลัพธ์

    เซิร์ฟเวอร์ลดลงสิบสามเครื่อง ไม่มีรายการ Cloudflare อีกต่อไป ทีม SOC เห็นสัญญาณที่ชัดเจนขึ้น ผ่านกระบวนการบันทึกข้อมูล และ CFO หยุดถามคำถามที่อึดอัด เกี่ยวกับงบประมาณโครงสร้างพื้นฐาน

07 วิธีที่เราทำงานจริง ๆ

หมุนปุ่มตัวเลข ดูแผนการเปลี่ยนไป

ทุกโครงการต้องบาลานซ์ระหว่างความเร็ว, ค่าใช้จ่าย, และความน่าเชื่อถือ. การประมาณการแบบห้าขั้นตอนต่อไปนี้ ได้รับการปรับให้สอดคล้องกับค่าเฉลี่ยของอุตสาหกรรม (การค้นหา 2–6 สัปดาห์, สถาปัตยกรรม 1–4 สัปดาห์, การนำไปใช้ 4–20 สัปดาห์, การทำให้แข็งแกร่ง 2–8 สัปดาห์, การส่งมอบ 1–2 สัปดาห์ — ต่อ รายงานปี 2024–2026 จาก NIX United, Agilie, SOLTECH, OTG Lab) เลื่อนแถบเลื่อน; แผนจะปรับน้ำหนักใหม่ทันที

01

การค้นพบ

3 สัปดาห์

อ่านโค้ดของคุณ สัมภาษณ์ทีมปฏิบัติการของคุณ ระบุสิ่งที่ยังไม่ทราบ เลือกภาษาตามแต่ละส่วนประกอบ

  • สัมภาษณ์โดเมน & ตรวจสอบโค้ด
  • ทะเบียนความเสี่ยง & เป้าหมาย SLA
  • การตัดสินใจเรื่องภาษาต่อบริการ
02

สถาปัตยกรรม

2 สัปดาห์

สัญญาต้องมาก่อนโค้ด OpenAPI / protobuf, โมเดลข้อมูล, โครงสร้างการปรับใช้, โครงร่างของคู่มือการดำเนินงาน

  • RFC สำหรับทุกสัญญาสาธารณะ
  • แบบจำลองข้อมูล + แผนการย้ายข้อมูล
  • อินฟรา-แอส-โค้ด เบสไลน์
03

การนำไปปฏิบัติ

8 สัปดาห์

PR ขนาดเล็ก, CI ผ่านตั้งแต่วันแรก, ทำการปรับใช้ทุกครั้งที่มีการผสาน, ตรวจสอบโดยผู้อาวุโสคนที่สอง

  • Rust: axum · tonic · sqlx
  • Python: FastAPI · Pydantic · SQLAlchemy
  • การสาธิตรายสัปดาห์ + บันทึกการเปลี่ยนแปลง
04

การเสริมความแข็งแกร่ง

3 สัปดาห์

การทดสอบแบบฟูซซิ่ง, การทดสอบตามคุณสมบัติ, การทดสอบโหลดกับปริมาณการใช้งานจริง, แบบจำลองภัยคุกคาม

  • cargo-fuzz · การทดสอบโปรโตคอล · สมมติฐาน
  • การทดสอบโหลด k6 ที่เชื่อมโยงกับ SLO
  • การตรวจสอบความปลอดภัยและการตรวจสอบการพึ่งพา
05

การส่งมอบ

1 สัปดาห์

Runbooks, การหมุนเวียนเวร, ADRs, และทีมที่เคยส่งมอบสิ่งนี้มาแล้ว

  • คู่มือปฏิบัติการ + ตารางเวร
  • บันทึก ADR และแผนผังสถาปัตยกรรม
  • การสนับสนุนหลังการเปิดตัว 30 วัน
08 ปัญหาเดียวกัน สองภาษา

จุดสิ้นสุดเดียวกันจะปรากฏอย่างไรในแต่ละรายการ

ดึงข้อมูลผู้ใช้, ตรวจสอบข้อมูลที่ป้อน, เก็บข้อมูลใน Postgres, ส่งคืน JSON. สลับระหว่าง ภาษา — ทั้งสองเป็นโค้ดจริงที่เราจะใช้งานจริง.

SQL_CREATE_USER ="insert into users(email,name) values(lower($1),$2) returning id,email,name"
Name = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=120)]

class UserIn(BaseModel):
    email: EmailStr
    name: ชื่อ

class UserOut(UserIn):
    id:int

@router.post("/users", response_model=UserOut, status_code=201)
async def create_user(u: UserIn) -> UserOut:
    try:
        row =await pool.fetchrow(SQL_CREATE_USER,str(u.email), u.name)
   ยกเว้นUniqueViolationErrorเป็นexc:
        ยกHTTPException(status_code=409, detail="อีเมลมีอยู่แล้ว")จากexc
    ถ้าrowเป็น None:
        ยกHTTPException(status_code=500, detail="การแทรกไม่สำเร็จ")
    คืนUserOut.model_validate(dict(row))
#[derive(Deserialize, Validate)]
#[serde(deny_unknown_fields)]
pub struct UserIn{
    #[validate(email)]
    pubemail: String,
    #[validate(custom(function ="valid_name"))]
    pubname: String,
}

pub async fn create_user(
    State(pool): State<PgPool>,
    ValidatedJson(u): ValidatedJson<UserIn>,)
 ->Result<(StatusCode, Json<UserOut>), ApiError> {
   letuser = sqlx::query_as!(UserOut,
        "insert into users(email,name) values(lower($1),$2) returning id,email,name",
        u.email.as_str(),
        u.name.trim(),
    )
    .fetch_one(&pool)
    .await
    .map_err(ApiError::from_db)?;

    Ok((StatusCode::CREATED, Json(user)))
}
บรรทัดของโค้ด
16 22
ปริมาณงานที่ดำเนินการ
1,185 คำขอ/วินาที 21,030 คำขอ/วินาที
ค่าความหน่วง p50
21.0 มิลลิวินาที 1.6 มิลลิวินาที
RAM ขณะไม่ได้ใช้งาน
41.2 MB 8.5 MB
เราจะตอบกลับภายใน 1 วันทำการ ไม่ล้อเล่น

คุณอ่านทั้งหน้าแล้ว
มาสร้างสิ่งนี้กันเถอะ

บอกเราว่าอะไรผิดปกติกับสแต็กของคุณ หรือสิ่งที่คุณต้องการสร้างจากศูนย์ คุณจะได้รับคำแนะนำทางวิศวกรรมที่แท้จริง — ไม่ใช่แค่การขาย

  • ไม่รับวิศวกรระดับจูเนียร์ ไม่ส่งงานไปต่างประเทศ
  • ตัวเลือกราคาคงที่สำหรับงานที่มีขอบเขตชัดเจน
  • ลงนามในข้อตกลงไม่เปิดเผยข้อมูลก่อนที่เราจะถามอะไรคุณ