จำกัดอัตราคำขอด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- จำกัดอัตราคำขอด้วย Flask-Limiter
- กำหนดค่า CORS สำหรับไคลเอนต์เบราว์เซอร์
- ส่วนหัวความปลอดภัยและ HTTPS
- ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด