使用Python 2.5增强生成器实现的协程和异步I/O,包括增强的WSGI服务器。
项目描述
这是一个面向网络的基于协程的编程库。
cogen的目标是能够以看似同步且易于的方式编写代码,这些代码以生成器形式产生调用并从该生成器接收结果。这些调用在cogen内部转换为异步和快速的操作系统调用。
显著特性
一个符合HTTP1.1的WSGI服务器,具有异步扩展
epoll、kqueue、select、I/O完成端口、后台sendfile
一些有用的类,可以将协程休眠、等待信号、队列、超时等。
快速介绍
协程只是被辅助类包装的生成器
from cogen.core.coroutines import coroutine @coroutine def mycoro(bla): result = yield <operation> result = yield <operation>
操作 指示调度器如何处理协程:暂停它直到发生某些事情,添加另一个协程到调度器,引发一个事件等。
如果操作 与结果相关联,则yield将返回该结果(例如,字符串或(连接,地址)元组),否则它将返回操作实例。
回声服务器示例
from cogen.core import sockets from cogen.core import schedulers from cogen.core.coroutines import coroutine @coroutine def server(): srv = sockets.Socket() print type(srv) srv.bind(('localhost',777)) srv.listen(10) while 1: print "Listening..." conn, addr = yield srv.accept() print "Connection from %s:%s" % addr m.add(handler, args=(conn, addr)) @coroutine def handler(sock, addr): yield sock.write("WELCOME TO ECHO SERVER !\r\n") while 1: line = yield sock.readline(8192) if line.strip() == 'exit': yield sock.write("GOOD BYE") sock.close() return yield sock.write(line) m = schedulers.Scheduler() m.add(server) m.run()
文档
开发
发生地点:http://code.google.com/p/cogen/
使用以下方式从源代码获取最新和最好的版本:
easy_install cogen==dev
项目详情
关闭
cogen-0.2.1.zip的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c75b4920aece024f820e438c942f3373a76c6ad6e257c557b707436c6978b929 |
|
MD5 | 6c765905e4bc0278d35dd5c0011d032d |
|
BLAKE2b-256 | 14aae2f0c43b299840cab45ba2b187b0b876bbe0961fe9ccf41010992091e505 |