Wsgiref 错误:AttributeError:'NoneType' 对象没有属性 'split' [英] Wsgiref Error: AttributeError: 'NoneType' object has no attribute 'split'

查看:37
本文介绍了Wsgiref 错误:AttributeError:'NoneType' 对象没有属性 'split'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了学习目的,我正在尝试实现我自己的 wsgiref 版本,结果我在这里:

I am trying to implement my own version of wsgiref for learning purpose and I ended up here:

from wsgiref.simple_server import make_server

class DemoApp():
    def __init__(self, environ, start_response):
        self.environ = environ
        self.start = start_response

    def __iter__(self, status):
        self.status = '200 OK'
        response_headers = [('Content-type','text/plain')]
        self.start(status, response_headers)
        return ["Hello World"]


if __name__ == '__main__':
    httpd = make_server('', 1000, DemoApp)
    print("Serving on port 1000")
    httpd.serve_forever()

当我转到端口 1000 时,出现属性错误.

When I go to port 1000, I am getting the attribute error.

AttributeError: 'NoneType' object has no attribute 'split'

我在哪里留下错误?

堆栈跟踪:

Serving on port 1000
Traceback (most recent call last):
  File "C:\Python27\lib\wsgiref\handlers.py", line 86, in run
    self.finish_response()
  File "C:\Python27\lib\wsgiref\handlers.py", line 131, in finish_response
    self.close()
  File "C:\Python27\lib\wsgiref\simple_server.py", line 33, in close
    self.status.split(' ',1)[0], self.bytes_sent
AttributeError: 'NoneType' object has no attribute 'split'
127.0.0.1 - - [11/Jan/2014 12:40:09] "GET / HTTP/1.1" 500 59
Traceback (most recent call last):
  File "C:\Python27\lib\SocketServer.py", line 295, in _handle_request_noblock
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 54469)
    self.process_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Python27\lib\SocketServer.py", line 649, in __init__
    self.handle()
  File "C:\Python27\lib\wsgiref\simple_server.py", line 124, in handle
    handler.run(self.server.get_app())
  File "C:\Python27\lib\wsgiref\handlers.py", line 92, in run
    self.close()
  File "C:\Python27\lib\wsgiref\simple_server.py", line 33, in close
    self.status.split(' ',1)[0], self.bytes_sent
AttributeError: 'NoneType' object has no attribute 'split'

推荐答案

这个怎么样,你需要yield输出而不是返回它.

How about this, you need to yield the output than returning it.

from wsgiref.simple_server import make_server

class DemoApp:

    def __init__(self, environ, start_response):
        self.environ = environ
        self.start = start_response

    def __iter__(self):
        status = '200 OK'
        response_headers = [('Content-type', 'text/plain')]
        self.start(status, response_headers)
        yield 'Hello world!'


if __name__ == '__main__':
    httpd = make_server('', 1000, DemoApp)
    print("Serving HTTP on port 1000...")
    httpd.serve_forever()

这篇关于Wsgiref 错误:AttributeError:'NoneType' 对象没有属性 'split'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆