이 논문의 주요 연구는 플라스크가 비동기 비 차단 요청 기능을 구현하고 특정 구현은 다음과 같습니다.
최근 IoT 프로젝트를 진행할 때 비동기 비 블로킹 HTTP 서버를 구축해야했습니다. 정보를 검색 한 후 Gevent 패키지를 사용할 수 있음을 알았습니다.
Gevent는 Libevent 이벤트 루프를 기반으로 Greenlet을 사용하여 고급 동기화 API를 제공하는 Python 동시 네트워크 라이브러리입니다. 코드 예는 다음과 같습니다.
gevent.wsgi import wsgiserverfrff yourapplication import apphttp_server = wsgiserver (( '', 5000), app) http_server.serve_forever ()
아래는 플라스크의 비동기 비 블로킹 코드 목록이며 향후 필요할 때 직접 포트로 포트하십시오.
# 코딩 = UTF-8# Python 버전 : 3.5.1# 플라스크에서 플라스크 가져 오기 플라스크, 요청, G# geventfrom gevent gevent gevent.pywsgi import wsgiservermonkey.patch_all ()# gevent entrimport timeApp = flask (__ name __) app.config.update(debug=true)@app.route ( '/asyn/', method = [ 'get']) def test_asyn_one ()) def test_asyn_one () : print ( "asyn이 요청이 있습니다. __name__ == "__main__": # app.run () http_server = wsgiserver (( '', 5000), app) http_server.serve_forever ()
Monkey.patch_all () 문을 추가하는 이유는 무엇입니까? Gevnet의 공식 웹 사이트에 자세한 설명이 있습니다. 간단한 설명이 있습니다.
원숭이는 표준 소켓 모듈의 기능과 클래스를 협력 상대로 신중하게 교체합니다. 이렇게하면 Gevent를 알지 못하는 모듈조차도 다중 녹색 환경에서 실행되는 이점을 얻을 수 있습니다.
번역 : 원숭이 패치는 표준 소켓 모듈의 기능과 클래스를 병렬 코드 카피로 신중하게 대체합니다. 이런 식으로 모듈을 통해 Gevent는 다중 녹색 환경에서 더 잘 실행할 수 있습니다.
브라우저를 열고 먼저 http://127.0.1:5000/asyn/을 요청한 다음 http://127.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
위의 내용은 Flask의 비동기 비 차단 요청 기능 인스턴스 분석 구현에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!