gevent开发http服务器与tcp服务器

感觉上gevent相关的东西也都了解的差不多了。。。最后收一下尾,看看怎么来利用gevent来实际的开发吧。。。

先来说http服务器相关的。。。因为gevent中带有WSGI的server实现。。。所以,可以很方便的利用gevent来开发http服务器。。。例如如下代码,采用gevent加tornado的方式。。。。(tornado其实自带的有I/O循环,但是用gevent可以提高其性能。。)代码如下:

from gevent import monkey; monkey.patch_all()
from gevent.wsgi import WSGIServer
import gevent
import tornado
import tornado.web
import tornado.wsgi


class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('hello world')

def app(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ["<b>hello world</b>"]



if __name__ == "__main__":
    application = tornado.wsgi.WSGIApplication(handlers=[(r"/", IndexHandler)])
    server = gevent.wsgi.WSGIServer(('', 8000), app)
    server.serve_forever()

至于说如何来开发基于TCP的server,因为gevent自带了streamserver,其实gevent的WSGI的server也是基于streamserver来开发的。。。非常的简单,只需要提供一个handle就好了。。。每当listener收到了一个socket,它都将会创建一个协程,然后调用handle来处理。。所以只需要同步的方式来写代码就好了。。。代码如下:

from gevent.server import StreamServer

def handle(sock, address):
    sock.recv(1000)
    sock.send("HTTP/1.1 200 OK\r\n\r\nfafdsa")

server = StreamServer(('', 8000), handle);
server.serve_forever();

实现起来确实很简单,感觉跟代码比nodejs都还要精炼一些。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值