使用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 |