浏览 4025 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-25
继昨天发现wsgi在有点问题而无法使用它来处理web请求后,我在官方文档中看到了一个http.server模块,于是转而研究它而非WSGI。这个模块中有两个重要的类,分别为HTTPServer和BaseHTTPRequestHandler,还有两个示例类,SimpleHTTPRequestHandler,CGIHTTPRequestHandler。还有一个测试方法(test),我参考其中的示例类写了一个HelloWorld程序。上代码: from http.server import HTTPServer,BaseHTTPRequestHandler import io,shutil class MyHttpHandler(BaseHTTPRequestHandler): def do_GET(self): r_str="Hello World" enc="UTF-8" encoded = ''.join(r_str).encode(enc) f = io.BytesIO() f.write(encoded) f.seek(0) self.send_response(200) self.send_header("Content-type", "text/html; charset=%s" % enc) self.send_header("Content-Length", str(len(encoded))) self.end_headers() shutil.copyfileobj(f,self.wfile) httpd=HTTPServer(('',8080),MyHttpHandler) print("Server started on 127.0.0.1,port 8080.....") httpd.serve_forever() 运行代码,成功,浏览器输出正常。 如果将这行代码: shutil.copyfileobj(f,self.wfile) 改为: self.wfile.write(r_str) 就会出现昨天的错误。 TypeError: send() argument 1 must be string or buffer, not str OK,这个错误到此算是有了一个圆满的结局。 各位对于处理web请求还有什么其他的方法麻烦告诉我。唉,又浪费了上班时间,工作了,呵呵,主业不是python。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |