跳转到主要内容

使用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://cogen.googlecode.com/svn/trunk/docs/build/index.html

开发

发生地点:http://code.google.com/p/cogen/

使用以下方式从源代码获取最新和最好的版本:

easy_install cogen==dev

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

cogen-0.2.1.zip (348.9 kB 查看哈希值)

上传时间

由以下支持