原來本身還沒搞懂這些。html
首先post一個觀點:python
nginx應該是沒解析任何東西,就判斷是否是http請求,而後轉發?或者判斷是否是tcp請求,而後轉發。nginx
因此給了python後臺就能夠用wsgi解包。web
瀏覽器發送一個HTTP請求;chrome
服務器收到請求,生成一個HTML文檔;flask
服務器把HTML文檔做爲HTTP響應的Body發送給瀏覽器;api
瀏覽器收到HTTP響應,從HTTP Body取出HTML文檔並顯示。瀏覽器
flask默認實現了多線程啊。服務器
在api裏面print("??"), time.sleep(5)就知道了,先輸出兩個??session
那
threaded=True,
processes=5,
這兩個參數是幹嗎的。
對,默認多線程,threaded=False,就能夠開啓不是多線程
GET
瀏覽器直接訪問:
GET / HTTP/1.1 Host: localhost:8888 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: session=eyJ1c2VyX2lkIjoxMX0.XFBI2g.Y6DEEvE55BrKN1RAi3ahzr2ACLY
curl:
('127.0.0.1', 37574)上線 GET / HTTP/1.1 Host: localhost:8888 User-Agent: curl/7.47.0 Accept: */*
nginx:
GET / HTTP/1.0 Host: localhost:8080 X-Real-IP: 192.18.0.1 X-Forwarded-For: 192.18.0.1 Connection: close Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: session=eyJ1c2VyX2lkIjoxMX0.XFBI2g.Y6DEEvE55BrKN1RAi3ahzr2ACLY If-None-Match: W/"5c334609-97a" If-Modified-Since: Mon, 07 Jan 2019 12:28:57 GMT
post man
GET / HTTP/1.1 Host: localhost:8888 Connection: keep-alive Cache-Control: no-cache User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Postman-Token: 30cd6141-94c1-72f4-867b-6812798e630d Accept: */* Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
curl post
('192.18.0.1', 37324)上線 POST / HTTP/1.1 Host: localhost:8888 User-Agent: curl/7.47.0 Accept: */* Content-Length: 144 Expect: 100-continue Content-Type: multipart/form-data; boundary=------------------------a2d7d2c79637d3d8 --------------------------a2d7d2c79637d3d8 Content-Disposition: form-data; name="weiming" aa --------------------------a2d7d2c79637d3d8--
postman post
('192.18.0.1', 37878)上線 POST / HTTP/1.1 Host: localhost:8888 Connection: keep-alive Content-Length: 141 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Cache-Control: no-cache Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop Postman-Token: 70ba296b-ceaa-10be-0fa0-99f50f7b92c3 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxQsGCT1GJEFAARPd Accept: */* Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 ------WebKitFormBoundaryxQsGCT1GJEFAARPd Content-Disposition: form-data; name="weiming" liu ------WebKitFormBoundaryxQsGCT1GJEFAARPd--
postman post nginx
('192.18.0.6', 34046)上線 POST / HTTP/1.0 Host: localhost:8080 X-Real-IP: 192.18.0.1 X-Forwarded-For: 192.18.0.1 Connection: close Content-Length: 234 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Cache-Control: no-cache Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop Postman-Token: 63158aa1-955c-b6bf-0a25-3ddcf7db86df Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryNM8OhUBY87wBspdZ Accept: */* Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 ------WebKitFormBoundaryNM8OhUBY87wBspdZ Content-Disposition: form-data; name="weiming" liu ------WebKitFormBoundaryNM8OhUBY87wBspdZ Content-Disposition: form-data; name="aaa" bbb ------WebKitFormBoundaryNM8OhUBY87wBspdZ--