การวิจัยหลักในบทความนี้คือ Flask ใช้ฟังก์ชั่นคำขอที่ไม่ปิดกั้นแบบอะซิงโครนัสและการใช้งานเฉพาะมีดังนี้
เมื่อเร็ว ๆ นี้เมื่อฉันทำงานในโครงการ IoT ฉันต้องสร้างเซิร์ฟเวอร์ HTTP ที่ไม่ปิดกั้นแบบอะซิงโครนัส หลังจากค้นหาข้อมูลฉันพบว่าฉันสามารถใช้แพ็คเกจ GEVENT
GEVENT เป็นไลบรารีเครือข่าย Python ที่ใช้กรีนเล็ตส์ตามลูปเหตุการณ์ libevent เพื่อให้ API การซิงโครไนซ์ขั้นสูง นี่คือตัวอย่างรหัส:
จาก gevent.wsgi นำเข้า wsgiserverfrom yourapplication นำเข้า apphttp_server = wsgiserver (('', 5000), แอพ) http_server.serve_orever ()ด้านล่างเป็นรายการรหัสที่ไม่ปิดกั้นแบบอะซิงโครนัสของขวดและพอร์ตโดยตรงเมื่อจำเป็นในอนาคต
# coding = utf-8# python เวอร์ชัน: 3.5.1# flaskfrom flask นำเข้าขวด, คำขอ, g# geventfrom gevent นำเข้า monkeyfrom gevent.pywsgi นำเข้า wsgiservermonkey.patch_all ()# Flask (__ name __) app.config.update(debug=true)@app.route ('/asyn/', methods = ['get'] def test_asyn_one (): พิมพ์ ("asyn มีคำขอ! __name__ == "__Main__": # app.run () http_server = wsgiserver (('', 5000), แอพ) http_server.serve_forever ()ทำไมต้องเพิ่ม Monkey.patch_all () คำสั่ง? มีคำอธิบายโดยละเอียดเกี่ยวกับเว็บไซต์ทางการของ Gevnet นี่คือคำอธิบายสั้น ๆ :
ลิงแทนที่ฟังก์ชั่นและคลาสอย่างระมัดระวังในโมดูลซ็อกเก็ตมาตรฐานด้วยคู่ความร่วมมือ ด้วยวิธีนี้แม้กระทั่งโมดูลที่ไม่ทราบว่า Gevent จะได้รับประโยชน์จากการทำงานในสภาพแวดล้อมที่มีหลายสีเขียว
การแปล: แพทช์ลิงอย่างระมัดระวังแทนที่ฟังก์ชั่นและคลาสของโมดูลซ็อกเก็ตมาตรฐานด้วยสำเนารหัสขนาน ด้วยวิธีนี้โมดูลสามารถเปิดใช้งาน Gevent ให้ทำงานได้ดีขึ้นในสภาพแวดล้อมหลายสีเขียวโดยไม่ทราบ
เปิดเบราว์เซอร์คำขอแรก http://127.0.0.1:5000/asyn/ จากนั้นขอ http://127.0.0.1:5000/test/ อินเทอร์เฟซนี้สิบครั้ง หากเป็นกรอบการทำงานทั่วไปอินเทอร์เฟซที่ตามมาจะไม่ตอบสนอง
เนื้อหาการพิมพ์มีดังนี้:
Asyn มีคำขอ!
127.0.0.1 - - [2016-10-24 20:45:10] "รับ/ทดสอบ/http/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:11] "รับ/ทดสอบ/http/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:11] "รับ/ทดสอบ/http/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:12] "รับ/ทดสอบ/http/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:12] "รับ/ทดสอบ/http/1.1" 200 126 0.000998
127.0.0.1 - - [2016-10-24 20:45:13] "รับ/ทดสอบ/http/1.1" 200 126 0.001001
127.0.0.1 - - [2016-10-24 20:45:14] "รับ/ทดสอบ/http/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:14] "รับ/ทดสอบ/http/1.1" 200 126 0.001014
127.0.0.1 - - [2016-10-24 20:45:15] "รับ/ทดสอบ/http/1.1" 200 126 0.001000
127.0.0.1 - - [2016-10-24 20:45:15] "รับ/ทดสอบ/http/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:18] "รับ/asyn/http/1.1" 200 126 10.000392
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการใช้งานของ Flask ของการวิเคราะห์ฟังก์ชั่นการร้องขอแบบไม่ปิดกั้นแบบอะซิงโครนัสฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!