日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uWSGI基础攻略

發布時間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uWSGI基础攻略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

uWSGI的安裝就不多說了、不懂的參考前面的文章、以下例子都是以http的形式來啟動、比如莪的py文件名稱叫做return_enviorn.py、那么便是這么來執行、如果邇想查看效果、請打開http://hostip:9090來查看

./uwsgi --http :9090 --wsgi-file ../program/py_script/return_enviorn.py

?

?

關于uWSGI最簡單的形式如下、其中的environ包含了各種從客戶端帶來的信息

# This is our application object. It could have any name,
#
except when using mod_wsgi where it must be "application"
def application( # It accepts two arguments:
# environ points to a dictionary containing CGI like environment variables
# which is filled by the server for each received request from the client
environ,
# start_response is a callback function supplied by the server
# which will be used to send the HTTP status and headers to the server
start_response):

# build the response body possibly using the environ dictionary
response_body = 'The request method was %s' % environ['HTTP_USER_AGENT']

# HTTP response code and message
status = '200 OK'

# These are HTTP headers expected by the client.
# They must be wrapped as a list of tupled pairs:
# [(Header name, Header value)].
response_headers = [('Content-Type', 'text/plain'),
('Content-Length', str(len(response_body)))]

# Send them to the server using the supplied function
start_response(status, response_headers)

# Return the response body.
# Notice it is wrapped in a list although it could be any iterable.
return [response_body]


假如莪們把environ['HTTP_USER_AGENT']改成environ、則是輸出所有信息、比如這樣

?

1 The request method was {
2 'SCRIPT_NAME': '',
3 'REQUEST_METHOD': 'GET',
4 'UWSGI_ROUTER': 'http',
5 'SERVER_PROTOCOL': 'HTTP/1.1',
6 'QUERY_STRING': '',
7 'HTTP_USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)',
8 'HTTP_CONNECTION': 'Keep-Alive',
9 'SERVER_NAME': 'M12-129',
10 'REMOTE_ADDR': '172.16.1.3',
11 'HTTP_THREADID': '4416',
12 'wsgi.url_scheme': 'http',
13 'SERVER_PORT': '9090',
14 'uwsgi.node': 'M12-129',
15 'wsgi.input': <uwsgi._Input object at 0x1a895b0>,
16 'HTTP_HOST': '172.16.3.129:9090',
17 'wsgi.multithread': False,
18 'REQUEST_URI': '/',
19 'HTTP_ACCEPT': 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*',
20 'wsgi.version': (1, 0),
21 'wsgi.run_once': False,
22 'wsgi.errors': <open file 'wsgi_input', mode 'w' at 0x7f5bf60644b0>,
23 'wsgi.multiprocess': False,
24 'HTTP_ACCEPT_LANGUAGE': 'zh-CN',
25 'uwsgi.version': '0.9.8.6',
26 'wsgi.file_wrapper': <built-in function uwsgi_sendfile>,
27 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
28 'PATH_INFO': '/'
29 }

?可是看出、這個environ里面所包含的信息和CGI的環境變量非常的相似、但又有所不同、比如有包括了UWSGI的路由形式、UWSGI的多線程和多進程情況等等、應該可以說是CGI環境變量的加強版本

?

?

1 #!/usr/bin/env python
2
3 from wsgiref.simple_server import make_server
4 from cgi import parse_qs, escape
5
6 html = """
7 <html>
8 <body>
9 <form method="get" action="parsing_get.wsgi">
10 <p>
11 Age: <input type="text" name="age">
12 </p>
13 <p>
14 Hobbies:
15 <input name="hobbies" type="checkbox" value="software"> Software
16 <input name="hobbies" type="checkbox" value="tunning"> Auto Tunning
17 </p>
18 <p>
19 <input type="submit" value="Submit">
20 </p>
21 </form>
22 <p>
23 Age: %s<br>
24 Hobbies: %s
25 </p>
26 </body>
27 </html>"""
28
29 def application(environ, start_response):
30
31 # Returns a dictionary containing lists as values.
32 d = parse_qs(environ['QUERY_STRING'])
33
34 # In this idiom you must issue a list containing a default value.
35 age = d.get('age', [''])[0] # Returns the first age value.
36 hobbies = d.get('hobbies', []) # Returns a list of hobbies.
37
38 # Always escape user input to avoid script injection
39 age = escape(age)
40 hobbies = [escape(hobby) for hobby in hobbies]
41
42 response_body = html % (age or 'Empty',
43 ', '.join(hobbies or ['No Hobbies']))
44
45 status = '200 OK'
46
47 # Now content type is text/html
48 response_headers = [('Content-Type', 'text/html'),
49 ('Content-Length', str(len(response_body)))]
50 start_response(status, response_headers)
51
52 return [response_body]
53
54 httpd = make_server('localhost', 8051, application)
55 # Now it is serve_forever() in instead of handle_request().
56 # In Windows you can kill it in the Task Manager (python.exe).
57 # In Linux a Ctrl-C will do it.
58 httpd.serve_forever()

?

?

?其中第32行的函數parse_qs()是個解析網頁請求參數為數組的冬冬、具體的用法可以看下面的這個例子

1 import urlparse
2 qsdata = "test=test&test2=test2&test2=test3"
3 qs = urlparse.parse_qs(qsdata)
4 print qs

輸出:

{'test': ['test'], 'test2': ['test2', 'test3']}

?

轉載于:https://www.cnblogs.com/klobohyz/archive/2011/12/14/2287181.html

總結

以上是生活随笔為你收集整理的uWSGI基础攻略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧洲美女粗暴牲交免费观看 | 日韩有码视频在线 | 久久精国产 | 99热这里只有精品首页 | 91在线影院| 国产日韩一区二区三区在线观看 | 伊人ab| 97碰| 97一区二区三区 | www.香蕉视频在线观看 | 日韩欧美亚洲成人 | 亚洲a v网站 | 久久女人网 | 欧美日韩国产综合网 | 中文字幕一区二区三区四区视频 | 欧美黄色a级大片 | 国产91精品露脸国语对白 | 成人午夜影视在线观看 | 国产叼嘿视频在线观看 | 影音先锋中文字幕在线视频 | 91精品中文字幕 | 成人www视频 | 中文字幕第6页 | 91精品中文字幕 | 日韩成人在线一区 | 91成人精品 | 亚洲第一女人av | 禁久久精品乱码 | 无码国产精品久久一区免费 | 香港三日本8a三级少妇三级99 | 91香焦视频 | 成年人在线免费观看网站 | 亚洲一区欧洲二区 | 日韩精品一区二区在线播放 | 白丝久久| 日韩免费成人 | 国产永久免费观看 | 亚洲素人在线 | 蜜桃视频一区 | 欧美mv日韩mv国产网站app | 日本少妇bbwbbw精品 | 一级黄色aa | 黑人黄色片 | 欧洲成人一区二区三区 | jizz教师 | 99热只有| 免费av动漫 | 日日夜夜爱爱 | 91深夜福利 | 中国在线观看免费视频 | 国产欧美日韩精品在线 | 欧美精品国产一区二区 | 国产高清在线一区 | 欧美日韩性生活视频 | xxxxx黄色| 久草视| 丁香六月av | 中文日本在线 | 精品动漫一区二区三区的观看方式 | 国产视频一区二区三区在线播放 | 国产亚洲精品aaaaaaa片 | 羞羞漫画在线播放 | 在线免费看mv的网站入口 | 美色视频 | 亚洲av成人无码一二三在线观看 | 丁香免费视频 | 久草播放 | 亚洲国产天堂 | 怡红院亚洲 | 日韩va| 亚洲人成一区 | 亚洲卡一| 精品免费一区二区 | 在线观看理论片 | 97黄色网 | 小早川怜子一区二区三区 | 女人扒开腿让男人桶爽 | 亚洲欧美日本一区 | 毛片视频播放 | 中日韩在线播放 | 久久777 | 久久久久久久久亚洲 | 日日日日干 | 怡春院欧美 | 亚洲天堂2018av | 和漂亮岳做爰3中文字幕 | 国产精品天天看 | 国内av| 在线一区二区观看 | 一级黄色视屏 | 聚色av | 国产91在线观看 | 日本艳妇| 成人在线一区二区三区 | 日韩欧美在线视频观看 | 夜久久| 欧洲色综合 | 午夜精品久久久久久久96蜜桃 | 欧美精品自拍偷拍 |