WSGI
1.简述
WSGI是将Python服务端程序连接到Web服务器的通用协议
2.代码(参图书《Python高效开发实战》)
webapp.py
def application(environ,start_response):
start_response("200 OK",[('Content-Type','text/html')])
return [u'<b>Hello, World</b>'.encode('utf8')]
wsgi_server.py
from wsgiref.simple_server import make_server
from webapp import application
server = make_server('',8080,application)
server.serve_forever()
3.问题及解决
(1) self.status.split(' ',1)[0], self.bytes_sent 'NoneType' object has no attribute 'split'
Traceback (most recent call last):
File "e:\a_softwareapplication\a_anacnoda\app\envs\tensorflow\Lib\socketserver
.py", line 313, in _handle_request_noblock
self.process_request(request, client_address)
File "e:\a_softwareapplication\a_anacnoda\app\envs\tensorflow\Lib\socketserver
.py", line 341, in process_request
self.finish_request(request, client_address)
File "e:\a_softwareapplication\a_anacnoda\app\envs\tensorflow\Lib\socketserver
.py", line 354, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "e:\a_softwareapplication\a_anacnoda\app\envs\tensorflow\Lib\socketserver
.py", line 681, in __init__
self.handle()
File "e:\a_softwareapplication\a_anacnoda\app\envs\tensorflow\Lib\wsgiref\simp
le_server.py", line 138, in handle
handler.run(self.server.get_app())
File "e:\a_softwareapplication\a_anacnoda\app\envs\tensorflow\Lib\wsgiref\hand
lers.py", line 144, in run
self.close()
File "e:\a_softwareapplication\a_anacnoda\app\envs\tensorflow\Lib\wsgiref\simp
le_server.py", line 36, in close
self.status.split(' ',1)[0], self.bytes_sent
AttributeError: 'NoneType' object has no attribute 'split'
可以看出是返回结果不符合接口标准,因此修改输出
return '<b>Hello, World</b>' 修改为 return [u'<b>Hello, World</b>'.encode('utf8')]