البحث الرئيسي في هذه الورقة هو أن Flask يقوم بتنفيذ وظيفة طلب عدم الحظر غير المتزامن ، والتنفيذ المحدد كما يلي.
في الآونة الأخيرة ، عندما كنت أعمل في مشروع إنترنت الأشياء ، كنت بحاجة إلى إنشاء خادم HTTP غير متزامن غير متزامن. بعد البحث عن المعلومات ، وجدت أنه يمكنني استخدام حزمة Gevent.
Gevent هي مكتبة شبكة Python Conversion التي تستخدم Greenlets على أساس حلقات الأحداث libevent لتوفير واجهة برمجة تطبيقات المزامنة المتقدمة. فيما يلي مثال رمز:
من gevent.wsgi استيراد wsgiserverfrom yoursplication استيراد apphttp_server = wsgiserver (('' ، 5000) ، التطبيق) http_server.serve_forever ()فيما يلي قائمة برموز قرة غير متزامنة غير متزامنة ، وقم بتوصيلها مباشرة عند الحاجة في المستقبل.
# الترميز = UTF-8# إصدار Python: 3.5.1# flaskfrom flask flask ، request ، g# geventfrom gevent import monkeyfrom gevent.pywsgi import wsgiservermon.patch_all ()# gevent endimport timeapp = flask (__ name __) app.config.update(debug=true)@app.route ('/asyn/' ، methods = ['get']) def test_asyn_one (): print ("asyn request!") time.sleep (10) return 'hello asyn'@apap __name__ == "__main__": # app.run () http_server = wsgiserver (('' ، 5000) ، app) http_server.serve_forever ()لماذا تضيف بيان monkey.patch_all ()؟ هناك شرح مفصل على الموقع الرسمي لـ GevNet ، إليك تفسير موجز:
يحل القرد باستبدال الوظائف والفئات بعناية في وحدة المقبس القياسية بنظرائها التعاوني. وبهذه الطريقة ، يمكن أن تستفيد الوحدات النمطية التي لا تدرك من جيفنت من الركض في بيئة متعددة الأخضر.
الترجمة: يستبدل Monkey Patch بعناية وظائف وفئات وحدات المقبس القياسية مع نسخ رمز متوازي. وبهذه الطريقة ، يمكن للوحدة أن تمكن Gevent من التشغيل بشكل أفضل في بيئة متعددة الأخضر دون معرفة ذلك.
افتح المتصفح ، طلب أولاً http://127.0.0.1:5000/asyn/ ، ثم اطلب http://127.0.0.1:5000/est/ هذه الواجهة عشر مرات. إذا كان إطار عمل قارورة عامة ، فلن تستجيب الواجهة اللاحقة.
محتوى الطباعة كما يلي:
لدى Asyn طلب!
127.0.0.1 - - [2016-10-24 20:45:10] "GET/TEST/HTTP/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:11] "GET/TEST/HTTP/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:11] "GET/TEST/HTTP/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:12] "GET/TEST/HTTP/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:12] "GET/TEST/HTTP/1.1" 200 126 0.000998
127.0.0.1 - - [2016-10-24 20:45:13] "GET/TEST/HTTP/1.1" 200 126 0.001001
127.0.0.1 - - [2016-10-24 20:45:14] "GET/TEST/HTTP/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:14] "GET/TEST/HTTP/1.1" 200 126 0.001014
127.0.0.1 - - [2016-10-24 20:45:15] "GET/TEST/HTTP/1.1" 200 126 0.001000
127.0.0.1 - - [2016-10-24 20:45:15] "GET/TEST/HTTP/1.1" 200 126 0.000000
127.0.0.1 - - [2016-10-24 20:45:18] "GET/ASYN/HTTP/1.1" 200 126 10.000392
ما سبق هو كل محتوى هذه المقالة حول تنفيذ Flask لتحليل مثيل وظيفة طلب عدم الحظر غير المتزامن ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!