基于python的web server有很多,比如:django、web.py、tornado、fastcgi等。经过一番比较我选择使用tornado,使用tornado的原因有如下几个:1、tornado是轻量级的web server,2、异步I/O处理连接请求,3、tornado是facebook开源项目之一。由于我的raspberry pi使用的是raspbian操作系统,而raspbian操作系统源上有python-tornado和python3-tornado二进制包,所以直接使用命令$sudo apt-get install python3-tornado python-tornado完成安装。完成安装后使用tornado官方网站上提供的测试代码来测试web服务器是否好用。测试代码如下:
#!/usr/bin/env python3
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self, name):
self.write("Hello, world")
application = tornado.web.Application([
(r"/(.*)", MainHandler),
])
if __name__ == "__main__":
application.listen(9090)
tornado.ioloop.IOLoop.instance().start()
其中web服务器监听端口是9090,所有的web请求由MainHandler类进行处理。在MainHandler类中包含一个get()方法,在该方法中向发出请求的web客户端输出"Hello,world"字符串。
在raspberry pi上运行该python脚本,之后通过命令netstat查看当前系统的监听端口,发现9090端口被监听。
pi@raspberrypi :~/test$ netstat -ltn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN
此时,在PC机上使用浏览器访问raspberry pi上的9090端口,就可以得到"Hello,world"字符串显示在浏览器页面中。