このペーパーの主な研究は、フラスコが非同期非ブロッキング要求機能を実装しており、特定の実装が次のとおりであることです。
最近、IoTプロジェクトに取り組んでいたとき、非同期非ブロッキングHTTPサーバーを構築する必要がありました。情報を検索した後、Geventパッケージを使用できることがわかりました。
Geventは、Libeventイベントループに基づいてGreenletsを使用して高度な同期APIを提供するPython Concurrentネットワークライブラリです。これがコードの例です。
gevent.wsgiからimport wsgiserverfrom yourapplication Import apphttp_server = wsgiserver(( ''、5000)、app)http_server.serve_forever()
以下は、Flaskの非同期非ブロッキングコードのリストであり、将来必要に応じて直接移植します。
#coding = utf-8#pythonバージョン:3.5.1#flaskfrom flaskインポートフラスコ、リクエスト、g flask(__ name __)app.config.update(debug=true)@app.route( '/asyn/'、methods = ['get'])def test_asyn_one():print( "asyn has a request!")time。 __name__ == "__main__":#app.run()http_server = wsgiserver(( ''、5000)、app)http_server.serve_forever()
なぜmonkey.patch_all()ステートメントを追加するのですか? Gevnetの公式Webサイトには詳細な説明があります。簡単な説明があります。
モンキーは、標準ソケットモジュールの機能とクラスを協力的な対応物に慎重に置き換えます。そうすれば、Geventを知らないモジュールでさえ、マルチグリーンレット環境での実行から恩恵を受けることができます。
翻訳:モンキーパッチは、標準ソケットモジュールの関数とクラスを並列コードコピーに慎重に置き換えます。このようにして、モジュールは、Geventがそれを知らずにマルチグリーンレット環境でより良く動作できるようにすることができます。
ブラウザを開き、最初のリクエストhttp://127.0.0.1:5000/asyn/を要求し、http://127.0.0.0.1:5000/test/このインターフェイスを10回リクエストします。一般的なフラスコフレームワークの場合、後続のインターフェイスは応答しません。
印刷コンテンツは次のとおりです。
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
上記は、フラスコの非同期非ブロッキングリクエスト関数インスタンス分析の実装に関するこの記事のすべての内容です。私はそれがすべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!