ตัวแปรเฉพาะบริบทและความปลอดภัยของเธรด
วิธีที่พร็อกซีทำงานถูกต้องข้ามคำขอ
ตัวแปรเฉพาะบริบทและความปลอดภัยของเธรด เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flask Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
คำถามมหัศจรรย์
อ็อบเจ็กต์ request ส่วนกลางหนึ่งตัวจะยังถูกต้องได้อย่างไรเมื่อผู้เยี่ยมชมจำนวนมากเข้าถึงแอปพร้อมกัน คำตอบคือข้อมูลเฉพาะบริบท
ดูเหมือนเป็นส่วนกลาง
อ็อบเจ็กต์อย่าง request และ g ดูเหมือนตัวแปรส่วนกลางทั่วไปที่นำเข้าเพียงครั้งเดียว แต่จริง ๆ แล้วเป็นพร็อกซีพิเศษ ไม่ใช่ตัวแปรร่วมธรรมดา
from flask import requestพร็อกซีชี้แยกตามบริบท
พร็อกซี จะส่งต่อการเข้าถึงทุกครั้งไปยังอ็อบเจ็กต์จริงของบริบทปัจจุบัน คำขอแต่ละรายการจึงเห็นข้อมูลของตนเองผ่านการนำเข้าเดียวกัน
ข้อมูลเฉพาะบริบท
Flask เรียกสิ่งเหล่านี้ว่า ข้อมูลเฉพาะบริบท สิ่งเหล่านี้ทำงานคล้ายข้อมูลเฉพาะเธรด แต่ยึดตามบริบทที่กำลังทำงานอยู่ ดังนั้นคำขอพร้อมกันจึงไม่ชนกัน
ความปลอดภัยต่อเธรด
เธรดสองตัวที่จัดการคำขอสองรายการจะได้รับบริบทที่ผูกไว้เป็นของตนเอง ดังนั้น request ในเธรดหนึ่งจะไม่แสดงข้อมูลของอีกเธรด
ก้าวข้ามเธรด
Flask รุ่นใหม่ใช้ contextvars ดังนั้นการแยกข้อมูลจึงยังคงอยู่แม้กับกรีนเล็ตและงานแบบอะซิงโครนัส ไม่ใช่เฉพาะเธรดของระบบปฏิบัติการเท่านั้น
การนำเข้าหนึ่งครั้ง ค่าหลายค่า
นี่คือเหตุผลที่ การนำเข้า เพียงครั้งเดียวที่ด้านบนของไฟล์จึงปลอดภัย พร็อกซีจะค้นหาอ็อบเจ็กต์จริงที่แตกต่างกันสำหรับทุกคำขอ
ระวังเบื้องหลัง
สร้าง เธรด ดิบจากมุมมอง แล้วเธรดนั้นจะไม่มีบริบท การเข้าถึง request ที่นั่นจะล้มเหลว เว้นแต่คุณจะผลักบริบทด้วยตนเอง
ส่งค่า ไม่ใช่พร็อกซี
ส่ง ค่า จริงที่ผู้ทำงานเบื้องหลังต้องใช้ เช่น รหัสผู้ใช้ แทนพร็อกซี request ซึ่งจะหายไปเมื่อถึงเวลานั้น
uid = request.args.get("id")
start_job(uid)รับอ็อบเจ็กต์จริง
ต้องการอ็อบเจ็กต์ที่อยู่เบื้องหลังพร็อกซีใช่ไหม ใช้ _get_current_object ได้ แต่ควรใช้ให้น้อยและใช้เฉพาะเมื่อจำเป็นจริง ๆ
real = request._get_current_object()เหตุใดจึงรู้สึกง่าย
ข้อมูลเฉพาะบริบทคือเหตุผลที่ Flask ดูเรียบง่าย: คุณนำเข้า request เพียงครั้งเดียวและวางใจได้ ขณะที่เฟรมเวิร์กแยกคำขอแต่ละรายการออกจากกันอย่างเงียบ ๆ
ตรวจสอบอย่างรวดเร็ว
มายืนยันกันว่าพร็อกซีปลอดภัยได้อย่างไร
ทบทวน
ส่วนกลางของ Flask แท้จริงแล้วคือ พร็อกซีเฉพาะบริบท พร็อกซีเหล่านี้แก้ค่าแยกตามคำขอ ทำให้เธรดและงานแบบอะซิงโครนัสแยกจากกัน ดังนั้นการนำเข้าครั้งเดียวจึงปลอดภัยทุกที่ 🎉
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “ตัวแปรเฉพาะบริบทและความปลอดภัยของเธรด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวแปรเฉพาะบริบทและความปลอดภัยของเธรด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปรเฉพาะบริบทและความปลอดภัยของเธรด”
วิธีที่พร็อกซีทำงานถูกต้องข้ามคำขอ คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวแปรเฉพาะบริบทและความปลอดภัยของเธรด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม
ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บริบทแอปเทียบกับบริบทคำขอ
- current_app และออบเจ็กต์ g
- ตัวแปรเฉพาะบริบทและความปลอดภัยของเธรด
- ผลักบริบทในสคริปต์และเชลล์