0Pricing
Flask Academy · บทเรียน

จำกัดอัตราคำขอด้วย Flask-Limiter

ใช้ขีดจำกัดอัตราต่อเส้นทางและทั้งระบบ

จำกัดอัตราคำขอด้วย Flask-Limiter เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flask Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องจำกัดอัตรา

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

ทำความรู้จัก Flask-Limiter

เครื่องมือที่นิยมใช้คือส่วนขยาย Flask-Limiter ซึ่งตรวจสอบคำขอขาเข้าและปฏิเสธผู้เรียกใช้ที่เกินโควตา

ติดตั้ง

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

pip install Flask-Limiter

ระบุผู้เรียกใช้

ตัวจำกัดต้องมีคีย์สำหรับใช้ในการนับ โดยทั่วไปจะเลือก IP ของไคลเอ็นต์ผ่านตัวช่วยในตัวชื่อ get_remote_address

from flask_limiter.util import get_remote_address

สร้างตัวจำกัด

คุณสร้าง Limiter แล้วผูกเข้ากับแอป ฟังก์ชันคีย์จะเป็นผู้กำหนดว่าแต่ละคำขอจะถูกนับให้กับใคร

limiter = Limiter(get_remote_address, app=app)

กำหนดขีดจำกัดเริ่มต้น

รายการ default_limits จะกำหนดขีดจำกัดเดียวให้กับทุกเส้นทางพร้อมกัน ถือเป็นตาข่ายนิรภัยสำหรับทั้งแอป

limiter = Limiter(get_remote_address, app=app,
    default_limits=["200 per day", "50 per hour"])

ขีดจำกัดรายเส้นทาง

เพิ่มความเข้มงวดให้ปลายทางเดียวด้วยตัวตกแต่ง @limiter.limit เส้นทางนี้จะมีกฎที่เข้มงวดกว่าเป็นของตัวเอง

@app.route("/login")
@limiter.limit("5 per minute")
def login():
    ...

อ่านสตริงขีดจำกัด

สตริงนี้อ่านได้เหมือนประโยคภาษาอังกฤษทั่วไป 5 per minute หมายความว่าผู้เรียกใช้สามารถเรียกเส้นทางนั้นได้ห้าครั้งต่อนาที

"5 per minute"

429 หมายถึงอะไร

เมื่อผู้เรียกใช้เกินขีดจำกัด Flask-Limiter จะส่งกลับ 429 Too Many Requests ซึ่งเป็นวิธีสุภาพในการบอกให้ช้าลง

ยกเว้นเส้นทาง

ปลายทางบางอย่าง เช่น การตรวจสอบสถานะ ไม่ควรถูกจำกัดอัตรา ให้ทำเครื่องหมายด้วย @limiter.exempt เพื่อข้ามขีดจำกัดทั้งหมด

@app.route("/health")
@limiter.exempt
def health():
    return "ok"

ใช้แบ็กเอนด์ร่วมกัน

ในระบบใช้งานจริง คุณจะเรียกใช้กระบวนการของแอปหลายกระบวนการ ดังนั้นจำนวนครั้งต้องเก็บไว้ใน storage_uri ที่ใช้ร่วมกัน เช่น Redis ไม่ใช่ในหน่วยความจำ

Limiter(get_remote_address, app=app,
    storage_uri="redis://localhost:6379")

ตรวจสอบอย่างรวดเร็ว

เลือกสถานะที่ไคลเอ็นต์ซึ่งถูกจำกัดอัตราจะได้รับ

ทบทวน

คุณเพิ่ม Flask-Limiter จำกัดตาม IP กำหนดขีดจำกัดเริ่มต้นและรายเส้นทาง ยกเว้นการตรวจสอบสถานะ และเรียนรู้การตอบกลับ 429 แล้ว ทำได้ดีมาก

คำถามที่พบบ่อย

บทเรียน “จำกัดอัตราคำขอด้วย Flask-Limiter” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “จำกัดอัตราคำขอด้วย Flask-Limiter” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “จำกัดอัตราคำขอด้วย Flask-Limiter”

ใช้ขีดจำกัดอัตราต่อเส้นทางและทั้งระบบ คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “จำกัดอัตราคำขอด้วย Flask-Limiter” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม

ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. จำกัดอัตราคำขอด้วย Flask-Limiter
  2. กำหนดค่า CORS สำหรับไคลเอนต์เบราว์เซอร์
  3. ส่วนหัวความปลอดภัยและ HTTPS
  4. ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด
← กลับไปที่ Flask Academy